@vhsporno

Почему не отображает форму в Django?

Делаю по доке джанги версии 1.8. Все делаю по инструкции, даже есть копипастить код, то он не работает. В чём моя ошибка?
views.py
from .forms import NameForm
def get_name(request):
	if request.method == "POST":
		form = NameForm(request.POST)
		if form.is_valid():
			return HttpResponseRedirect('/thanks/')
	elif request.method == "GET":
		form = NameForm()
	return render(request, 'index.html', {'form': form})


forms.py
from django import forms
class NameForm(forms.Form):
    your_name = forms.CharField(label='Your name', max_length=100)


index.html


{% extends "base_generic.html" %}
{% block content %}
{% if latest_twits %}
<div>
 	<ul>
 		{% for twits in latest_twits %}
 			<li><p>{{twits.text_twitt}}</p></li>
 			{{twits.user_id}}
 			<br>
 		{% endfor %}
 	</ul>

 </div>

 <br>
 <form method="post">
	{% csrf_token %}
	{{form.as_p}}

<input type="submit" value="login">
</form>
 {% endif %} 
{% endblock %}


urls.py если нужно
from django.conf.urls import url, include
from . import views 
urlpatterns = [
	url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^accounts/', include('django.contrib.auth.urls')),
]


Два дня ломаю голову, не могу сделать элементарную форму
  • Вопрос задан
  • 1964 просмотра
Пригласить эксперта
Ответы на вопрос 3
dimonchik2013
@dimonchik2013
non progredi est regredi
Два дня ломаю голову, не могу сделать элементарную форму

см. у меня в профиле картинку
5cbe17c442e2c248214577.jpeg
1) в индекс темплейте оставь ТОЛЬКО форму
2) нарасти
Ответ написан
@howuu
Скорее всего не соблюдается это условие
{% if latest_twits %}
От того и форма не отображается, вынесите ее из условия, либо сделайте так что бы оно соблюдалось
Ответ написан
@immaculate
Программист-путешественник
Не скорее всего, а совершенно точно не выполняется условие:
{% if latest_twits %}
Потому что такая переменная в шаблон не передается вообще.

И честно говоря, код выгляди просто ужасно. Django 1.8 давно устарел, нынешняя LTS версия 2.2. И даже для 1.8 код написан плохо. Ведь давно существуют хорошие руководства по Django, чем же вы пользуетесь, когда пишете такой код? Если перейти на Class Based Views, то код станет короче и понятнее. Да даже с функциями код обработки форм уже 10 лет как минимум пишется намного проще:

form = SomeForm(request.POST or None)
if form.is_valid():
    return redirect('index')
return render(form)


И формы лучше не рендерить вручную в шаблоне, а использовать пакет django-crispy-forms.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы