2017-06-19 137 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) 
相關問題