Поскольку делать render в формуляр со сдержись, и видеть это в admin

Я использую Джанго 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


  
{% csrf_token %} {{ form.as_table }}

Сделав runserver я это получаю:

introducir la descripción de la imagen aquí

Терминал

[07/май / 2018 23:35:42] "POST / контакт / HTTP/1.1" 200 472

Я не нахожу решение, только хочу, чтобы он загрузил формуляр в html, и эта информация смогла видеть ее в admin. Спасибо заранее из-за помощи

0
задан 26.11.2018, 16:40
2 ответа

Дополняя ответ, который уже они дали тебе, я перехожу к тому, чтобы объяснять тебе немного 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, у

from . import models, forms
from django.contrib import admin

class ContactoAdmin(admin.ModelAdmin):
    form = forms.ContactoForm

admin.site.register(models.Contacto, ContactoAdmin)

Из этой формы было это в admin

admin.py, твой формуляр deberГ, - чтобы быть видным tambiГ©n в формуляре, когда ты делаешь что-то с администратором

, ИЗДАЛ

Добавил в виде форму как ты должен относиться к твоему формуляру, таким образом что, когда прибывает из-за mГ©todo POST стоившая, и если совсем estГЎ правильный, он это сохраняет в базе данных для того, чтобы позже ты смог видеть это с admin

2
ответ дан 03.12.2019, 04:45
  • 1
    Очень хороший вклад осветлил несколько сомнений. Сейчас проблема - это, послав со сдержись он не пересылает их в admin и не загружает их в базе данных, я изменил несколько вещей и ничто, спроси, что я должен изменять что-то ** < form action =" / контакт / " > ** он не загружает данных с html в BD и терминал info: ** / я устанавливаю контакты / HTTP/1.1" 200 4644 ** –  Developer 09.05.2018, 02:28
  • 2
    @Developer я издал ответ añ adiendo то, в чем ты нуждаешься, чтобы относиться к формулярам в Джанго –  German Alzate 09.05.2018, 16:45
  • 3
    Функционируй совершенно!! –  Developer 10.05.2018, 17:21

А следовательно я вижу в ningГєn точку он estГЎs перемещая переменную form.

Меняет form.Form на form.ModelForm на твой класс формуляр. AhГ - ты можешь использовать класс Meta и включать модель, которую ты хочешь использовать.

TambiГ©n ты должен загружать формуляр в твоей функции контакт и включать ее в render как дела включая контакты.

, Если эта informaciГіn ты она хочешь увидеть внутри /admin/ то, что ты, должно быть, создаешь класс ModelAdmin внутри твоего файла admin.py

0
ответ дан 03.12.2019, 04:45