资讯专栏INFORMATION COLUMN

Django1.7开发官网(二)

call_me_R / 2424人阅读

摘要:为了避免做广告的嫌疑,以后会把熙鱿记个字去掉了。在和用户注册的账户功能,比如登陆注册退出修改密码等都在里实现。第二个参数要跳转的路径,如果没有第二个参数则默认跳转到登陆页面里添加

为了避免做广告的嫌疑,以后会把熙鱿记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)

注册
删掉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. 登录

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

退出
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"),

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37426.html

相关文章

  • 使用Django1.7开发熙鱿记官网

    摘要:升级了,根据业务的需求,我们也准备开发新版的网站,新加入会员管理,订单查看等新功能,界面也会重新调整。官网熙鱿记是一个什么样的站点,就是一个搞电商的,卖海鲜的,没啥技术含量,没啥高大上的概念。 Django升级1.7了,根据业务的需求,我们也准备开发新版的网站,新加入会员管理,订单查看等新功能,界面也会重新调整。官网: http://www.youyutiao.com 熙鱿记是一个什...

    darcrand 评论0 收藏0
  • Django1.7+python 2.78+pycharm使用mysql数据库

    摘要:配置好和后,使用创建新项目。一开始因为非官方没有使,倒是意外简单的成功了。。。在的里面添加数据库引擎数据库名用户名密码数据库主机,默认为数据库端口,默认为 配置好virtualenv 和virtualenvwrapper后,使用pycharm创建新项目。之后要面临的问题就来了,之前一直使用的是sqlite作为开发数据库进行学习,按照之前看教程的原则,好像就是说开发环境要和生产环境尽量的...

    dingding199389 评论0 收藏0
  • Django使用Social-Auth实现微信第三方网站扫码登录

    摘要:前言之前让网页公司制作新官网的时候规划有第三方账号的登录功能,但由于当时的一些开放平台申请步骤比较繁琐尤其是微信开放平台,所以一直拖延着,到了最近只能自己添加相关的功能。 前言 之前让网页公司制作新官网的时候规划有第三方账号的登录功能,但由于当时的一些开放平台申请步骤比较繁琐(尤其是微信开放平台),所以一直拖延着,到了最近只能自己添加相关的功能。 由于是刚接触Python和Django...

    fox_soyoung 评论0 收藏0
  • Ubuntu下部署Django应用

    摘要:配置这个启动其他方式安装七牛云由于网站的静态存储要用七牛云,在运行程序前要安装否则报错没有的方法。七牛云安装前注意安装的版本,我被坑过一次,写程序时是版本,部署时都了,接口全都不一样。还有推荐下这篇来自的部署实例 以下所有代码中的操作都需要在命令行运行 安装mysql apt-get update apt-get install mysql-server mysql-client 根据...

    tinysun1234 评论0 收藏0

发表评论

0条评论

call_me_R

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<