Я использую Джанго 1.11.4,
root app
url(r'^contacto/', include('contacto.urls'), name='contacto'),
contacto_app/urls.py
from django.conf.urls import url, include
from contacto.views import contacto
urlpatterns = [
url(r'^$', contacto, name='contacto'),
]
contacto_app/forms.py
from django import forms
class formulario(forms.Form):
nombre = forms.CharField(max_length=25)
email = forms.EmailField(max_length=25)
telefono = forms.CharField(max_length=15)
mensaje = forms.CharField(max_length=300)
contacto_app/views.py
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
from.models import Contacto
def contacto(request):
contactos = Contacto.objects.all()
return render(request, 'contacto.html', {'contactos': contactos})
contacto_app/models.py
from django.db import models
class Contacto(models.Model):
nombre = models.CharField(max_length=25)
email = models.CharField(max_length=25)
telefono = models.CharField(max_length=15)
mensaje = models.CharField(max_length=300)
template/contacto.html
Сделав runserver я это получаю:
Терминал
[07/май / 2018 23:35:42] "POST / контакт / HTTP/1.1" 200 472
Я не нахожу решение, только хочу, чтобы он загрузил формуляр в html, и эта информация смогла видеть ее в admin. Спасибо заранее из-за помощи
Дополняя ответ, который уже они дали тебе, я перехожу к тому, чтобы объяснять тебе немного mГЎs основательно, что ты хочешь и quГ© ты нуждаешься.
Первое состоит в том, чтобы начинать с твоего формуляра, asГ - как они рекомендуют тебя, лучше получать в наследство класса forms.ModelForm
, потому что, таким образом, возможно производить формуляр согласно классу, и tendrГЎs в тебя disposiciГіn один mГ©todo save
, чтобы сохранять прямо в таблице модели, которую ты распределяешь ему в этот формуляр, оставаясь твой формуляр следующей формы:
forms.py
from django import forms
from .models import Contacto
class ContactoForm(forms.ModelForm):
class Meta:
model = Contacto
fields = ('nombre', 'email', 'telefono', 'mensaje', )
, Чтобы иметь в виду, каждое поле, что ты добавляешь в свойстве fields
, должен быть содержавшим внутри твоей модели (в файле models.py , внутри класса). И serГЎn того же типа данных, которых ты определял бы в модели.
Следующее - в твоем виде, для того, чтобы смог renderizar хорошо формуляр, важно, чтобы ты он переместил переменные контекста templates. funciГіn shortcut render
принимает 3 parГЎmetros, первый: она peticiГіn; Секунда: маршрут в string из template в renderizar, и третий: это переменные, что usarГЎ этот сдержись (контекст). А именно, любая переменная, которую ты будешь перемещать в тебя, сдержись, должен будь быть внутри этого словаря переменных, а следовательно, если ты хочешь переместить твой формуляр и renderizarlo, deberГ-схвати делать что-то как это:
views.py
from django.shortcuts import render
from .models import Contacto
from .forms import ContactoForm
def contacto(request):
contactos = Contacto.objects.all()
if request.method == 'POST':
formulario = ContactoForm(data=request.POST)
if formulario.is_valid():
formulario.save()
else:
formulario = ContactoForm()
return render(request, 'contacto.html', {'contactos': contactos, 'form': formulario})
Из этой формы или дебета renderizar. И из-за Гєltimo, если ты хочешь, чтобы этот формуляр был тем же самым, который виден в администраторе Джанго. Есть файл, который производится automГЎticamente, когда мы создаем app с manage.py
, и этого файла называет admin.py , где предполагается, что мы, должно быть, приносим классы и функции, связанные с admin для нашего app.
Для того, чтобы твой формуляр оказался отраженным в admin, asegГєrate, у Из этой формы было это в admin from . import models, forms
from django.contrib import admin
class ContactoAdmin(admin.ModelAdmin):
form = forms.ContactoForm
admin.site.register(models.Contacto, ContactoAdmin)
, ИЗДАЛ
Добавил в виде форму как ты должен относиться к твоему формуляру, таким образом что, когда прибывает из-за mГ©todo POST стоившая, и если совсем estГЎ правильный, он это сохраняет в базе данных для того, чтобы позже ты смог видеть это с admin
А следовательно я вижу в ningГєn точку он estГЎs перемещая переменную form.
Меняет form.Form
на form.ModelForm
на твой класс формуляр. AhГ - ты можешь использовать класс Meta
и включать модель, которую ты хочешь использовать.
TambiГ©n ты должен загружать формуляр в твоей функции контакт и включать ее в render как дела включая контакты.
, Если эта informaciГіn ты она хочешь увидеть внутри /admin/
то, что ты, должно быть, создаешь класс ModelAdmin
внутри твоего файла admin.py