2014-01-09 39 views
-1

我對django非常陌生,我有一個sqlite3數據庫文件,我想在其中使用一個表格來驗證我的網站,它是一個非常基本的html登錄頁面,我可以這樣做嗎?另外,如果你能告訴我內置登錄和身份驗證是如何工作的以及他們使用哪個數據庫,請提前致謝。在Django中使用自定義數據庫登錄

+0

您是否閱讀過Django認證文檔?你應該這樣做,然後根據任何尚不清楚的問題詢問特定問題。 –

回答

2

爲了更好地理解,請閱讀https://docs.djangoproject.com/en/dev/topics/auth/http://www.djangobook.com/en/2.0/chapter14/

要在Django中實現基本的登錄功能,您可以按照以下步驟操作。

先決條件: *您必須在settings.py具有有效的DB設置*

1.Urls.py

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

urlpatterns = patterns('', 
    # index page 
    url(r'^$', 'app.views.index'), 
    # after login user will be redirected to this url 
    url(r'^logged_in/$', 'app.views.logged_in'), 
    # using default django auth views with custom templates 
    url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}), 
    url(r'^logout/$', 'django.contrib.auth.views.logout', {'template_name': 'logout.html'}), 

) 

2. Views.py

from django.shortcuts import render_to_response 
from django.contrib.auth.decorators import login_required 
from django.template import RequestContext 

# index view (just redirect to login page) 
def index(request): 
    return HttpResponseRedirect('/login') 

# this view will run after successfull login 
@login_required 
def logged_in(request): 
    return render_to_response('logged_in.html', context_instance=RequestContext(request)) 

3. login.html

{% extends 'base.html' %} 
{% block title %}Log in{% endblock %} 
{% block extrastyle %} 
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}bootstrap/css/signin.css" /> 
{% endblock %} 
{% block content %} 
    <form action="" class="form-signin" method="post">{% csrf_token %} 
     <h3 class="form-signin-heading text-center">Please log in</h3> 
     {% if form.non_field_errors %} 
      <div class="alert alert-danger"> 
      {{ form.non_field_errors|striptags }} 
      </div> 
     {% endif %} 
     {% if not form.username.errors %} 
     <input id="id_username" name="username" type="text" class="form-control" placeholder="Username (admin)" autofocus> 
     {% else %} 
     <div class="form-group has-error"> 
      {% for error in form.username.errors %} 
      <label class="control-label" for="id_username">{{ error }}</label> 
      {% endfor %} 
      <input id="id_username" name="username" type="text" class="form-control" placeholder="Username (admin)" autofocus> 
     </div> 
     {% endif %} 
     {% if not form.password.errors %} 
     <input id="id_password" name="password" type="text" class="form-control" placeholder="Password (admin)" autofocus> 
     {% else %} 
     <div class="form-group has-error"> 
      {% for error in form.password.errors %} 
      <label class="control-label" for="id_password">{{ error }}</label> 
      {% endfor %} 
      <input id="id_password" name="password" type="text" class="form-control" placeholder="Password (admin)"> 
     </div> 
     {% endif %} 

     <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button> 
    </form> 
    </form> 
{% endblock %} 
+0

你應該用詳細的程序完成你的答案,不要只發布外部鏈接。 –

+0

人們應該花時間閱讀才能更好地理解,而不是直接詢問而不知道任何事情。 – CrazyGeek