2017-06-19 138 views
0

我目前的工作我的方式,通过下面的教程:https://www.tutorialspoint.com/django/django_form_processing.htm如何将django表单提交从一个页面转移到另一个页面?

我的品牌新的Django,和前面的教程是我在Django唯一的经验,所以这是很明显没有太多去。当我尝试使用表单登录时,我收到以下消息:您是:未登录,但我申请的登录凭证与我在本教程开始时创建超级用户时应用的登录凭证相同,所以我感觉他们应该是有效的。下面是我的文件:

forms.py

from django import forms 

class LoginForm(forms.Form): 

    user = forms.CharField(max_length = 100) 
    password = forms.CharField(max_length = 100) 

的login.html

<html> 
    <body> 

     <form name = "form" action = "{% url "login" %}" 
     method = "POST" >{% csrf_token %} 

     <div style = "max-width:470px;"> 
      <center> 
       <input type = "text" style = "margin-left:20%;" 
        placeholder = "Identifiant" name = "username" /> 
      </center> 
     </div> 

     <br> 

     <div style = "max-width:470px;"> 
      <center> 
       <input type = "password" style = "margin-left:20%;" 
        placeholder = "password" name = "password" /> 
      </center> 
     </div> 

     <br> 

     <div style = "max-width:470px;"> 
      <center> 

       <button style = "border:0px; background-color:#4285F4; margin-top:8%; 
        height:35px; width:80%;margin-left:19%;" type = "submit" 
        value = "Login" > 
        <strong>Login</strong> 
       </button> 

      </center> 
     </div> 

     </form> 

    </body> 
</html> 

urls.py(在MyApp文件夹中)

from django.conf.urls import url 
from django.views.generic import ListView, TemplateView 
from myapp.views import hello, viewArticle, crudops, login 
from myapp.models import Dreamreal 

urlpatterns = [ 

    url(r'^hello/', hello, name = 'hello'), 
    url(r'^article/(\d+)/', viewArticle, name = 'article'), 
    url(r'^crudops/', crudops, name = "crudops"), 
    url(r'^dreamreals/', ListView.as_view(model = Dreamreal, template_name = "dreamreal_list.html")), 
    url(r'^connection/', TemplateView.as_view(template_name = "login.html")), 
    url(r'^login/', login, name = 'login'), 


] 

views.py

from django.shortcuts import render 
from django.http import HttpResponse 
from myapp.models import Dreamreal 
import datetime 
from myapp.forms import LoginForm 

def hello(request): 

    today = datetime.datetime.now().date() 
    return render(request, "hello.html", {"today":today, "days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]}) 

def viewArticle(request, articleId): 

    text = "Displaying article: %s " %articleId 
    return HttpResponse(text) 

def crudops(request): 

    #Read All Entries 

    objects = Dreamreal.objects.all() 
    text = "Here are all the entries in the Dreamreal Database" 

    for obj in objects: 
     text += "<br/>" + obj.website + ", " + obj.name + "<br/>" 

    return HttpResponse(text) 

def login(request): 

    username = "Not Logged In" 

    if request.method == "POST": 
     MyLoginForm = LoginForm(request.POST) 

     if MyLoginForm.is_valid(): 
      username = MyLoginForm.cleaned_data["username"] 

    else: 

     MyLoginForm = LoginForm() 

    return render(request, "loggedin.html", {"username": username}) 

..................................... ........................................

任何帮助将不胜感激。

+0

那么你实际上没有任何代码记录用户。这些都与你的问题的标题有什么关系? –

+0

@DanielRoseman我正在做的是遵循我在链接中提供的教程。它指出,当他们点击登录时,应该说“你是:提供的用户名”,但我没有这样做。就像我说的,我有45分钟的Django体验,所以我不知道。我只是想让别人帮我弄清楚为什么我的代码不能完成教程的功能。 – tgrim90

+0

你的表单有'user = forms.CharField(max_length = 100)',而其他一切,包括你的模板,都是指用户名而不是用户。如果在表单上将'user'更改为'username',会发生什么?也许看看你的'MyLoginForm.is_valid()'是否正在用print语句评估为'True',以进一步调试步骤。我怀疑你的表格因为我上面提到的原因而无效。 – DragonBobZ

回答

0

表单和模板上的字段名称需要匹配。因为您有

<input type = "text" style = "margin-left:20%;" 
placeholder = "Identifiant" name = "username" /> 

name = username,您需要确保您的表单使用该字段名称。

class LoginForm(forms.Form): 

    username = forms.CharField(max_length = 100) 
    password = forms.CharField(max_length = 100) 
相关问题