2016-04-25 1 views
0

デモ/ urls.pyジャンゴ1.9リンクに右ページに表示されません

from django.conf.urls import url, include, patterns 
from django.contrib import admin 

import views 
from . import views 

urlpatterns = patterns('demo.urls', 
    url(r'^admin', admin.site.urls), 
    url(r'^', views.login, name="login"), 
    url(r'^resetpwd', views.resetpwd, name='resetpwd'), 
    url(r'^mechanics/', include('mechanics.urls', namespace="mechanics")), 
) 

力学/ urls.py

import views 

from . import views 

urlpatterns = patterns('mechanics.urls', 
    url(r'^admin', include(admin.site.urls)), 
    url(r'^$', views.login, name="login"), 
    url(r'^resetpwd', views.resetpwd, name='resetpwd'), 
    url(r'^loandelinquency', views.loandelinquency, name='loandelinquency'), 
) 

力学/ views.py

from django.shortcuts import render 
from django.http import HttpResponse 
from django.template import loader 
import cPickle 

def loandelinquency(request): 
    return render(request, 'mechanics/LoanDelinquency.html') 

def login(request): 
    try: 
     users = cPickle.load(open('users.p', 'rb')) 
    except: 
     users = {'[email protected]':'**********'} 
     cPickle.dump(users, open('users.p', 'wb')) 
    if request.method == 'POST': 
     try: 
      users = cPickle.load(open('users.p', 'rb')) 
     except: 
      users = {'[email protected]':'**********'} 
      cPickle.dump(users, open('users.p', 'wb')) 
     user = request.POST.get('user','') 
     pwd = request.POST.get('pwd', '') 
     request.session['user'] = user 
     request.session['pwd'] = pwd 
     try: 
      if user in users: 
       if users[user] == pwd: 
        return render(request, 'mechanics/inside.html') 
       else: 
        wronguser = '' 
        wrongpwd = 'Wrong password.' 
        return render(request, 'mechanics/login.html', {'wrongpwd': wrongpwd, 'wronguser':wronguser}) 
      else: 
       wronguser = 'Wrong username' 
       wrongpwd = '' 
       return render(request, 'mechanics/login.html', {'wrongpwd': wrongpwd, 'wronguser':wronguser}) 
     except: 
      return render(request, 'mechanics/login.html') 
    if request.method == "GET": 
     return render(request, 'mechanics/login.html') 

def resetpwd(request): 
    if request.method == 'GET': 
     return render(request, "resetpwd.html") 

mechanics/templates/mechanics/login.html

<html> 
    <body> 
     <title>Data Science Demo</title> 
      <h1 align="center">Ninja's</h1> 
       <br> 
       <div align="center"><font size=24>Login</font> 
       <br> 
        <form align="center" method="post"> 
         {% csrf_token %} 
         E-mail<br> 
         <input type="text" align="center" name="user"><br> 
         Password<br> 
         <input type="password" align="center" name="pwd"><br> 
         <input type="submit" value="Submit"> 
        {% if wrongpwd %} 
         <br> 
         <font color="red">{{ wrongpwd }}</font><br> 
        {% endif %} 
        {% if wronguser %} 
         <br> 
         <font color="red">{{ wronguser }}</font> 
        {% endif %} 
        </form> 
        <a href="{% url 'mechanics:resetpwd' %}">Reset Password</a> 
       </div> 
    </body> 
</html> 
<style> 

div { 
    position: relative; 
    width: 300px; 
    padding: 25px; 
    border: 25px solid navy; 
    margin: auto; 
    background-color: #b0e0e6; 
} 
</style> 

力学/テンプレート/力学/ resetpwd.html

<html> 
    <title>Reset Password</title> 
     <body> 
      <p>You did it!</p> 
     </body> 
</html> 

<a href="{% url 'mechanics:resetpwd' %}">Reset Password</a>だけで、ログインページに私を返しています。それは私がコードに入れた他のすべてのリンクと同じことをします。これをどうやって解決するのですか?

答えて

4

正規表現の末尾にドル記号を含める必要があります。ドル記号なし

url(r'^$', views.login, name="login"), 

、正規表現r'^'は、すべてのURLと一致しますので、この1以下の任意のURLパターンは無視されます。

このURLとresetpwdは、含まれているmechanics.urlsに既に含まれているので、実際にはルートURL設定から削除できます。

Djangoにはan authentication systemが付いています。あなた自身で作成しようとするのではなく、これを使うべきです。

1

はあなたのコードを持ついくつかの問題があります。

まず第一に、あなたは完全にDjangoの認証システムを中心に取り組んでいます。もしあなたが何をしているのか分かっていれば、これは問題ありません(実際にあなたがなぜDjangoを使用しているのか疑問に思います)。その他の場合には

ので、あなたが実際にそれを使用する必要があります:あなたは、あなたがされませんので、Djangoの中でユーザを認証されていないプレーンテキストのパスワード(Djangoはないでしょう)

  • を使用している

    1. の認証に基づいてDjangoに付属するデコレータlogin_required()のような、ログインページへの正しいリダイレクト、ローカリゼーション、アクセス許可、電子メールによるパスワードリセットなどを処理する機能を使用できます。サイドノートとして

    次の2つのloginresetpwページを持っている、とあなたは(1ベースurls.pyにと力学に)二回adminサイトが含まれます。

  • 関連する問題