【问题标题】:Empty form doesn't show on the page页面上不显示空表单
【发布时间】:2020-04-26 09:25:01
【问题描述】:

我正在我的网站上构建自定义用户身份验证逻辑。我创建了MyUsermodel 而不是创建了表单

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/ 我没有任何异常,也没有空表单本身

【问题讨论】:

    标签: django django-templates django-views django-authentication


    【解决方案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 %}
    

    【讨论】:

      猜你喜欢
      • 2012-12-24
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多