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 聊聊, 查看更多联系方式