页面上不显示空表单
Posted
技术标签:
【中文标题】页面上不显示空表单【英文标题】:Empty form doesn't show on the page 【发布时间】:2020-04-26 09:25:01 【问题描述】:我正在我的网站上构建自定义用户身份验证逻辑。我创建了MyUser
model 而不是创建了表单
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'),]
在我的视图文件中,我有以下方法,如果 request == GET 应该返回空表单,如果表单 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/
我没有任何异常,也没有空表单本身
【问题讨论】:
【参考方案1】:您正在扩展您的log.html
文件中的main/base.html
模板;但是,您没有在其中包含任何% blcok xxx %
。
因此它将省略log.html
中的整个custom 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 %
【讨论】:
以上是关于页面上不显示空表单的主要内容,如果未能解决你的问题,请参考以下文章