页面上不显示空表单
Empty form doesn't show on the page
我正在我的站点上构建自定义用户身份验证逻辑。我创建了 MyUser
模型而不是创建了表单
from django import forms
from django.contrib.auth.forms import UserCreationForm,UserChangeForm
from .models import MyUser
classCustomUserCreationForm(UserCreationForm):
class Meta:
model = MyUser
fields = ('email',)
比项目级别 urls.py 文件我添加了以下路径
urlpatterns =[
path('login/',include('authorization.urls'),]
比 authorization/urls.py
我创造了
from django.urls import path
from .views import login_form
urlpatterns =
[path(' ',login_form,name='login_form'),]
在我的视图文件中,我有以下方法,如果请求 == GET 应该 return 空表单,如果表单 is_valid() 它重定向到另一个页面
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .form import UserCreationForm
def login_form(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
email = form.cleaned_data('email')
password = form.cleaned_data('password')
return HttpResponseRedirect('/thank/')
else:
form = UserCreationForm()
return render(request,'registration/log.html',{'form':form})
最后一块是log.html
{% extends 'main/base.html' %}
<form action="{% url 'login_form' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
但是当我 运行 服务器打开 http://127.0.0.1:8000/login/
我没有任何例外,也没有空表格本身
您正在扩展 log.html
文件中的 main/base.html
模板;但是,您没有在其中包含任何 {% blcok xxx %}
。
所以它会省略整个 custom html inside log.html
.
基本上,如果你有类似的东西:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
在您的 base.html 中,那么您的 log.html
应该具有以下内容:
{% extends 'main/base.html' %}
{% block content %}
<form action="{% url 'login_form' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% endblock %}
我正在我的站点上构建自定义用户身份验证逻辑。我创建了 MyUser
模型而不是创建了表单
from django import forms
from django.contrib.auth.forms import UserCreationForm,UserChangeForm
from .models import MyUser
classCustomUserCreationForm(UserCreationForm):
class Meta:
model = MyUser
fields = ('email',)
比项目级别 urls.py 文件我添加了以下路径
urlpatterns =[
path('login/',include('authorization.urls'),]
比 authorization/urls.py
我创造了
from django.urls import path
from .views import login_form
urlpatterns =
[path(' ',login_form,name='login_form'),]
在我的视图文件中,我有以下方法,如果请求 == GET 应该 return 空表单,如果表单 is_valid() 它重定向到另一个页面
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .form import UserCreationForm
def login_form(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
email = form.cleaned_data('email')
password = form.cleaned_data('password')
return HttpResponseRedirect('/thank/')
else:
form = UserCreationForm()
return render(request,'registration/log.html',{'form':form})
最后一块是log.html
{% extends 'main/base.html' %}
<form action="{% url 'login_form' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
但是当我 运行 服务器打开 http://127.0.0.1:8000/login/
我没有任何例外,也没有空表格本身
您正在扩展 log.html
文件中的 main/base.html
模板;但是,您没有在其中包含任何 {% blcok xxx %}
。
所以它会省略整个 custom html inside log.html
.
基本上,如果你有类似的东西:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
在您的 base.html 中,那么您的 log.html
应该具有以下内容:
{% extends 'main/base.html' %}
{% block content %}
<form action="{% url 'login_form' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% endblock %}