Невозможно отобразить мой CreateForm в Django - PullRequest
2 голосов
/ 30 мая 2019

Я создал форму и представление в Django, и я пытаюсь отобразить его в HTML, но он ничего не загружает, и я не знаю почему.

alumno2.html

{% block header %}
    <header class="masthead bg-white text-dark text-uppercase">
        <div class="container">
            <h3 class="text-center">Añadir alumno</h3>
            <form method="post">
                {% csrf_token %}
                    {{ form.as_p }}
                <button class="btn btn-secondary" type="submit">Guardar</button>
            </form>
        </div>
    </header>
{% endblock %}

form.py

class AlumnoForm2(forms.ModelForm):
    class Meta:
        model = Alumno
        #fields = ['dni', 'nombre', 'apellido1', 'apellido2','email','repetidor']
        fields = ['dni', 'nombre', 'apellido1', 'apellido2','email','repetidor','curs']

        labels = {
            'dni': 'dni',
            'nombre': 'nombre',
            'apellido1': 'Primer Apellido',
            'apellido2': 'Segundo Apellido',
            'email': 'Email',
            'repetidor': 'repetidor',
            'curs': 'curs'
        }

        widgets = {
            'dni': forms.TextInput(attrs={'class': 'form-control'}),
            'nombre': forms.TextInput(attrs={'class': 'form-control'}),
            'apellido1': forms.TextInput(attrs={'class': 'form-control'}),
            'apellido2': forms.TextInput(attrs={'class': 'form-control'}),
            'email': forms.TextInput(attrs={'class': 'form-control'}),
            'repetidor': forms.CheckboxInput(attrs={'class':'form-control-checkbox','id': 'repetidor'}),
            'curs':forms.Select(attrs={'class': 'form-control'}),
        }

view.py

class crea_alumno(CreateView):
    model = Alumno
    form_class = AlumnoForm2
    template_name = '/alumno2.html'
    success_url = reverse_lazy('mostrar_alumnos')

url.py

url(r'^alumno2/$', crea_alumno.as_view(),name='alumno2'),

models.py

class Alumno(models.Model):
    dni = models.CharField(max_length=9,primary_key=True)
    nombre = models.CharField(max_length=100)
    apellido1 = models.CharField('Primer apellido',max_length=50)
    apellido2 = models.CharField('Segundo apellido',max_length=50)
    email = models.EmailField("Correo electronico",null=True)
    repetidor = models.BooleanField()
    curs = models.ManyToManyField(Curso, blank=True, related_name="Historico_de_cursos")
    Nivel = models.ManyToManyField('Nivel', through = 'Completado',through_fields=('Alumno','Nivel'))
    Practica = models.ManyToManyField('Practica', through = 'Nota',through_fields=('Alumno','Practica'))
    Curso = models.ManyToManyField('Curso',through = 'Curso_alumno',through_fields=('Alumno','Curso'))


    def __str__(self):
        return self.dni

HTML отображает только кнопку сохранения, но не загружает форму создания. HTML находится внутри папок шаблонов, поэтому у меня есть эти URL.

EDIT: Я удалил шаблон, который у меня был также

url(r'^alumno2/$', TemplateView.as_view(template_name='alumno2.html'),name='alumno2'),

и я не уверен, нужно ли мне поместить это в url.py, так что теперь у меня есть только представление и я не могу найти свой шаблон без этого

1 Ответ

0 голосов
/ 30 мая 2019

Удалите строку

url(r'^alumno2/$', TemplateView.as_view(template_name='alumno2.html'),name='alumno2'),

из вашего urls.py и оставьте только эту:

url(r'^alumno2/$', crea_alumno.as_view(),name='alumno2'),

А внутри вашего представления удалите / в имени шаблона:вместо

template_name = '/alumno2.html'

Используйте

template_name = 'alumno2.html'

И замените CreateView на FormView согласно документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...