我想在一页上进行注册和验证。
如果以第一种形式(form1 - authenticate)输入正确的数据,则不会发生任何事情。
如果以第二种形式输入数据(form2 - 注册),那么也不会发生任何事情。但我不明白为什么?? !!
这是我的第一个产品,所以......
如果你帮助我,我将非常非常高兴!!!
class RegisterFormView(FormView):
form_class = UserCreationForm
def form_valid(self, form):
form.save()
return super(RegisterFormView, self).form_valid(form)
def get_success_url(self):
return resolve_url('core:mainPage')
def myview(request):
form1 = UserForm(request.POST or None)
form2 = UserCreationForm(request.POST or None)
context = {'form1': form1, 'form2': form2,}
if request.method == 'POST' and form1.is_valid():
user = authenticate(username=form1.cleaned_data['user'], password=form1.cleaned_data['password'])
if user is not None:
if user.is_active:
login(request, user)
render(request, 'core/main_page.html')
else:
return render(request, 'core/main_page.html')
else:
return render(request, 'core/main_page.html')
if request.method == 'POST' and form2.is_valid():
RegisterFormView.form_valid(request, form2)
return render(request, 'core/login.html', context)
{% extends "core/base.html" %}
{% load widget_tweaks %}
{% block title %} {% endblock %}
{% block content %}
<div class="container header clearfix">
<h3> Авторизация </h3>
<form method="post" class="form-horizontal">
{% csrf_token %}
{% render_field form1.user class="form-control" placeholder="Логин"%}
{% render_field form1.password class="form-control" placeholder="Пароль"%}
{{ form.errors }}
<input type="submit" class="btn btn-default" id="norm">
</form>
<h3>Регистрация</h3>
<form method="post" class="form-horizontal" role="form">
{% csrf_token %}
{% render_field form2.first_name class="form-control" placeholder="Ваше имя"%}
{% render_field form2.last_name class="form-control" placeholder="Ваша фамилия"%}
{% render_field form2.username class="form-control" placeholder="Логин"%}
{% render_field form2.password1 class="form-control" placeholder="Пароль"%}
{% render_field form2.password2 class="form-control" placeholder="Повторите пароль"%}
{% render_field form2.email class="form-control" placeholder="email"%}
{% render_field form2.email class="form-control" placeholder="Повтотрите email"%}
<input type="submit" class="btn btn-default" >
</form>
{% endblock %}
from django.conf.urls import url, include
from django.contrib.auth.views import login, logout
from . import views
urlpatterns = [
url(r'^$', views.MainPage.as_view(), name="mainPage"),
url(r'^support/', views.HowToPrint.as_view(), name="support"),
url(r'^login/', views.myview, name="login"),
url(r'^logout/', logout, name="logout"),
url(r'^thank-you', views.Thanks.as_view(), name="thank-you")
]
答案 0 :(得分:0)
此处显示您忘记为表单添加地址(http://www.w3schools.com/tags/tag_form.asp)
如果您阅读上面的链接,您会看到表单看起来像这样......
<form action="demo_form.asp" method="get">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>
demo_form.asp
指的是表单发送到的路径。在您的模板中,您需要添加一个操作,将其发送到您的登录URL。这通常通过调用模板action='{% url "login" %}'
中的名称来完成,或者您可以通过路径直接引用URL。