Django 的权限管理 (login, logout)

更新日期: 2015-12-12 阅读次数: 46930 分类: Django

Django 的在线文档太卡了

在 Mac 上使用 Dash 将 Django 文档都缓存到本地就方便多了,可以节省大量的等待时间。

user 表的结构

CREATE TABLE "auth_user" (
	"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
	"password" varchar(128) NOT NULL, 
	"last_login" datetime NOT NULL, 
	"is_superuser" bool NOT NULL, 
	"username" varchar(30) NOT NULL UNIQUE, 
	"first_name" varchar(30) NOT NULL, 
	"last_name" varchar(30) NOT NULL, 
	"email" varchar(75) NOT NULL, 
	"is_staff" bool NOT NULL, 
	"is_active" bool NOT NULL, 
	"date_joined" datetime NOT NULL
);

最简洁的实现

利用 Django 内置的 views 可以快速搞定 login, logout, password 管理。

例如在 urls.py 里添加,并指向自定义的模板文件。

url(r'^login/$', 'django.contrib.auth.views.login', 
	{'template_name': 'login.html', 'extra_context': {'next': '/'}}),
url(r'^logout/$', 'django.contrib.auth.views.logout', 
	{'next_page': "/"}),

模板文件参考

{% extends "base.html" %}

{% block content %}

{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}

<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<table>
<tr>
    <td>{{ form.username.label_tag }}</td>
    <td>{{ form.username }}</td>
</tr>
<tr>
    <td>{{ form.password.label_tag }}</td>
    <td>{{ form.password }}</td>
</tr>
</table>

<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>

{% endblock %}

更新 home view 的逻辑及模板

def home(request):
    if request.user.is_authenticated():
        # Do something for authenticated users.
        user = request.user.username
    else:
        # Do something for anonymous users.
        user = ""

    context = {"user": user}
    return render(request, "home.html", context)
{% if user %}
  hello {{ user }}
  <a href="/logout">退出</a>
{% else %}
  hello world
  <a href="/login">登录</a>
{% endif%}

用户注册

先不考虑对内置用户 model 的扩展,简单创建一个新用户为例

参考

关于作者

我是来自山东烟台的一名开发者,喜欢瞎折腾,顺便记记笔记。有敢兴趣的话题,欢迎加微信 zhongwei 聊聊。 白天工地搬砖,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2019年12月09日 "一二九"运动纪念日
2019年12月09日 世界足球日
2019年12月10日 世界人权日
2019年12月12日 西安事变纪念日
2019年12月13日 南京大屠杀
2019年12月20日 澳门回归日
2019年12月21日 国际篮球日
2019年12月22日 冬至
2019年12月24日 平安夜
2019年12月25日 圣诞节
查看更多节日