Django1.7开发官网(二)
admin
2023-07-31 01:50:05
0

为了避免做广告的嫌疑,以后会把熙鱿记3个字去掉了。

现在我们完善登陆和注册功能。

首先,我们要为站点创建一个超级用户python manage.py createsuperuser然后根据命令行提示输入用户名、邮箱和密码。

导入app

前面我们新建了两个app, 如果要让django找到你的app, 需要在ahead/settings/__init__.py INSTALLED_APPS 里添加 \’guys\’, \’shops\’.

添加URL

ahead.urls里添加
url(r\'^\', include(\'guys.urls\')),url(r\'^\', include(\'shops.urls\')),这样就可以在guys和shops里的urls.py设置url了。这就是我喜欢python的设计,大多数的python框架都是以一个app为单位,这样程序的复用性是非常高的,之前写的论坛模块在其他站点都可以直接使用,不像php和ruby的框架,都放在一个controllers里。

用户登录注册我们放在guys里,所以我们在guys/urls.py里的代码

# -*- 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. 登录

  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,就是这么简单方便,又不失灵活性。

  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\'),
    

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...