Django1.7開發官網(二)

爲了不作廣告的嫌疑,之後會把熙魷記3個字去掉了。php

如今咱們完善登錄和註冊功能。html

首先,咱們要爲站點建立一個超級用戶python manage.py createsuperuser而後根據命令行提示輸入用戶名、郵箱和密碼。python

導入app

前面咱們新建了兩個app, 若是要讓django找到你的app, 須要在ahead/settings/__init__.py INSTALLED_APPS 裏添加 'guys', 'shops'.django

添加URL

ahead.urls裏添加
url(r'^', include('guys.urls')),url(r'^', include('shops.urls')),這樣就能夠在guys和shops裏的urls.py設置url了。這就是我喜歡python的設計,大多數的python框架都是以一個app爲單位,這樣程序的複用性是很是高的,以前寫的論壇模塊在其餘站點均可以直接使用,不像php和ruby的框架,都放在一個controllers裏。ruby

用戶登陸註冊咱們放在guys裏,因此咱們在guys/urls.py裏的代碼app

# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url

from guys.views.accounts import RegisterView


urlpatterns = patterns('', 
    url(r'^whatsup/$', 'django.contrib.auth.views.login', name='login'),
    url(r'^seeyou/$', 'guys.views.accounts.logout', name='logout'),
    url(r'^welcome/$', RegisterView.as_view(), name='register'),
)
接下來,咱們要在配置文件裏添加
LOGIN_REDIRECT_URL = "home"  # 登錄後跳轉的頁面
LOGIN_URL = "login"          # 登錄的url連接 (http://host/whatsup)
LOGOUT_URL = "logout"        # 退出的url連接 (http://host/seeyou)
  1. 註冊
    刪掉guys/views.py,新建guys/views/文件夾,我的習慣,我不太喜歡把全部的邏輯都放在一個views文件裏。在guys/views/__init__.py和guys/views/accounts.py用戶註冊的帳戶功能,好比登錄註冊退出修改密碼等都在accounts.py裏實現。
    註冊功能,忽然想用Django的Class-based views實現框架

    # -*- coding: utf-8 -*-
    from django.views.generic import View
    from django.contrib.auth.views import logout_then_login
    from ahead.utils.lazy import *
    from django.contrib.auth.forms import RegisterForm
    
    
    class RegisterView(View):
        def get(self, request):
            form = RegisterForm()
            return render(request, "registration/register.html", {'form': form})
    
        def post(self, request):
            form = RegisterForm(request.POST)
            if form.is_valid():
                pass
    
            return render(request, "registration/login.html", {'form': form})

    Django自帶的認證模塊,模板都放在templates/registation目錄下,若是你須要自定義html頁面的話在ahead/templates/下新建一個registation目錄,而後新建login.html。 2. 登陸post

  2. 登錄
    登錄咱們使用Django自帶的模塊,Django的驗證模塊html頁面放在templates/registration/login.html若是咱們想要重寫html頁面,只須要在ahead/templates/下新建一個registration目錄,而後再目錄下新建一個login.html就能夠覆蓋掉系統自帶的login.html。而後咱們能夠在login.html裏輸入{{ form }}試一下。
    若是你想快速獲得一個登陸功能,直接在url裏添加url(r'^whatsup/$', 'django.contrib.auth.views.login', name='login'),無需多寫一行代碼,就能夠直接使用。Django,就是這麼簡單方便,又不失靈活性。url

  3. 退出
    1) 直接使用auth view裏的url(r'^seeyou/$', 'django.contrib.auth.views.logout', name='logout'),退出後返回登錄頁面
    2) 也是django自帶的,但個人需求是用戶退出後跳到首頁。命令行

    # guys/views/accounts.py
    from django.contrib.auth.views import logout_then_login
    
    def logout(request):
        return logout_then_login(request, '/')  # 第二個參數要跳轉的路徑,若是沒有第二個參數則默認跳轉到登錄頁面
    
    # guys/urls.py urlpatterns裏添加
    url(r'^seeyou/$', 'guys.views.accounts.logout', name='logout'),
相關文章
相關標籤/搜索