Я использую модуль Django django.contrib.auth.forms
, в частности класс UserCreationForm
.
Вот шаблонная версия моей формы, где register_form
- переменная, переданная из views.py
, содержащая пустое UserCreationForm
:
<form id="registration" method="post" action="/register">
{% csrf_token %}
<table class="float_left">
<tr><th><label for="id_username">Username:</label></th><td>{{ register_form.username }}</td></tr>
<tr><th><label for="id_password1">Password:</label></th><td>{{ register_form.password1 }}</td></tr>
<tr><th><label for="id_password2">Confirm Password:</label></th><td>{{ register_form.password2 }}</td></tr>
</table>
<input class="float_right button_input" type="submit" value="Register" />
</form>
Отображается очень хорошо на странице. Обратите внимание, что действие установлено на "/register"
. Однако когда я нажал на кнопку отправки, ничего не происходило. Я открыл очень удобную консоль JavaScript в Chrome и увидел следующий вывод (запущенный на сервере Django manage.py
dev):
POST http://localhost:8000/includes/register.php 404 (NOT FOUND)
Высокий. Обратите внимание, что здесь Django (или что-то еще, возможно) вставил каталог includes
в мой путь.
Вот соответствующий фрагмент из urls.py
:
urlpatterns = patterns('',
url(r'^register', 'authentication.views.register'),
)
А views.py
:
def register(request):
# csrf is used to prevent Cross-Site Request Forgeries (i.e. XSS attacks, SQL injections, etc.)
c = {}
c.update(csrf(request))
# if logged in, redirect to personal profile
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/home")
else:
c['register_form'] = UserCreationForm()
return render_to_response('authentication/register.html', c, context_instance=RequestContext(request))
Просто очень простое перенаправление на /home
, если форма была действительной (после сохранения нового пользователя в базе данных) или обратный возврат на ту же страницу в противном случае (authentication /register.html
- соответствующий шаблон).
Я сбит с толку.
Заранее спасибо за все, что вы можете мне сказать.
РЕДАКТИРОВАТЬ: я должен заметить, я использовал http://localhost:8000/
в качестве домена для приложения Django, над которым я работаю уже довольно давно. Фактически, эта форма тоже работала нормально, когда я использовал для печати встроенный метод UserCreationForm
as_table()
. Но это выглядело ужасно, поэтому я переключился на ручное форматирование формы, и теперь это не работает. Я не настраивал тег <form>
один раз. Я все еще должен был предоставить это до того, как начал печатать автоматически.
ОСНОВНОЕ РЕДАКТИРОВАНИЕ:
НЕПРЕРЫВНЫЕ ПАРНИ, Я ПОЛУЧИЛ ЭТО. Оказывается, на странице был какой-то устаревший код, который пытался вызвать какой-то старый php, который использовался для проверки формы, прежде чем я начал преобразовывать его в Django, который что я делал Спасибо за комментарии, но я собираюсь закрыть этот вопрос.