Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django登录表单输入字段未显示_Python_Django_Django Forms - Fatal编程技术网

Python Django登录表单输入字段未显示

Python Django登录表单输入字段未显示,python,django,django-forms,Python,Django,Django Forms,为一个类处理Django Web项目 为登录页面创建了自己的模板,如下所示 {% extends 'thirdauth/base.html' %} {% block content %} <h2>Login</h2> <div class="login-form"> <form method="post" action="{% url 'thirdauth:login' %}"> {{form.as_p}} {% csr

为一个类处理Django Web项目

为登录页面创建了自己的模板,如下所示

{% extends 'thirdauth/base.html' %}
{% block content %}
<h2>Login</h2>
<div class="login-form">
  <form method="post" action="{% url 'thirdauth:login' %}">
      {{form.as_p}}
      {% csrf_token %}
      <input type="hidden" name="next" value="{{ next }}" />
      <p><input type="submit" value="Login"></p>
  </form>
</div>
<br>
<p><strong>-- OR --</strong></p>
<a href="{% url 'thirdauth:social:begin' 'github' %}">Login with GitHub</a><br>
{% endblock %}
我很感谢你的帮助,我认为这只是我犯的一个小小的愚蠢的错误,但我无法找到它,互联网上的大多数帮助都集中在自定义表单上

编辑 views.py:

from django.shortcuts import render_to_response
from django.template.context import RequestContext
from django.shortcuts import render, get_object_or_404

def authentication(request):
    return render(request, 'registration/login.html')
from django.utils import timezone
from .models import *
from django.shortcuts import render, get_object_or_404
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
import wikipediaapi

def home(request):
  return render(request, 'worldmap/home.html',
             {'worldmap': home})

def denverText (request):
    wiki_wiki = wikipediaapi.Wikipedia('en')
    page_py = wiki_wiki.page('Denver')
    return page_py.summary[0:60];

@login_required
def plannerGetStarted (request):
    return render(request, 'worldmap/planner.html')
def authentication(request):
if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        user = authenticate(username=cd['username'],
                    password=cd['password'])
        if user is not None:
            if user.is_active:
                login(request, user)
                #return HttpResponse('Authenticated ' \
                 #       'successfully')
                return HttpResponseRedirect('/home/')
        else:
            return HttpResponse('Disabled account')

    else:
        return HttpResponse('Invalid login')
else:
    form = LoginForm()

return render(request, 'registration/login.html', {'form': form})
编辑2 第二视图.py:

from django.shortcuts import render_to_response
from django.template.context import RequestContext
from django.shortcuts import render, get_object_or_404

def authentication(request):
    return render(request, 'registration/login.html')
from django.utils import timezone
from .models import *
from django.shortcuts import render, get_object_or_404
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
import wikipediaapi

def home(request):
  return render(request, 'worldmap/home.html',
             {'worldmap': home})

def denverText (request):
    wiki_wiki = wikipediaapi.Wikipedia('en')
    page_py = wiki_wiki.page('Denver')
    return page_py.summary[0:60];

@login_required
def plannerGetStarted (request):
    return render(request, 'worldmap/planner.html')
def authentication(request):
if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        user = authenticate(username=cd['username'],
                    password=cd['password'])
        if user is not None:
            if user.is_active:
                login(request, user)
                #return HttpResponse('Authenticated ' \
                 #       'successfully')
                return HttpResponseRedirect('/home/')
        else:
            return HttpResponse('Disabled account')

    else:
        return HttpResponse('Invalid login')
else:
    form = LoginForm()

return render(request, 'registration/login.html', {'form': form})

已解决: 将此代码添加到my views.py:

from django.shortcuts import render_to_response
from django.template.context import RequestContext
from django.shortcuts import render, get_object_or_404

def authentication(request):
    return render(request, 'registration/login.html')
from django.utils import timezone
from .models import *
from django.shortcuts import render, get_object_or_404
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
import wikipediaapi

def home(request):
  return render(request, 'worldmap/home.html',
             {'worldmap': home})

def denverText (request):
    wiki_wiki = wikipediaapi.Wikipedia('en')
    page_py = wiki_wiki.page('Denver')
    return page_py.summary[0:60];

@login_required
def plannerGetStarted (request):
    return render(request, 'worldmap/planner.html')
def authentication(request):
if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        user = authenticate(username=cd['username'],
                    password=cd['password'])
        if user is not None:
            if user.is_active:
                login(request, user)
                #return HttpResponse('Authenticated ' \
                 #       'successfully')
                return HttpResponseRedirect('/home/')
        else:
            return HttpResponse('Disabled account')

    else:
        return HttpResponse('Invalid login')
else:
    form = LoginForm()

return render(request, 'registration/login.html', {'form': form})

这就是我认为正在发生的事情。如果我说的没错,您首先要导航到/accounts/login

当您转到/accounts/login时,django使用您的身份验证视图,该视图只呈现html而不创建表单。这就是为什么最初看不到字段的原因

表单设置为提交到/login/,因为操作设置为“{%url'thirdauth:login”%}”/login/使用默认的django登录视图。因此,一旦您使用不带字段的sumbit表单,就会在default视图中导致错误,从而将您重定向回/login/。这就是为什么单击“提交”后,您会看到带有“此字段是必需的”错误的字段


希望能解释它

请向我们展示呈现
表单的
视图.py
,我遵循了《Django By Example》(第4章)一书中的方法。他们说您使用来自Django的内置视图,但没有提到必须更改自己的views.py,所以我甚至没有涉及该文件。我添加了我的视图的内容。pyWell您的视图不会创建表单。模板应该如何呈现它?我怀疑表单操作会将您带到一个实际创建表单的不同视图。嗯,我认为这就是使用django身份验证的意义所在,所以我不必自己编写它。在整个项目中,只有这个other views.py(请参见编辑2),但也没有表单的渲染功能。我可以提供一些截图,点击登录/提交按钮后,表单字段会出现。感谢对逻辑的解释,我无法理解!我将代码(见帖子)添加到了我的views.py,现在它可以工作了。