Django注册和登录-通过示例说明
有人能详细解释一下如何用尽可能简单的语言进行注册和认证吗?我用Django注册和登录-通过示例说明,django,forms,authentication,login,registration,Django,Forms,Authentication,Login,Registration,有人能详细解释一下如何用尽可能简单的语言进行注册和认证吗?我用django.contrib.auth进行了身份验证(登录),但我想得到的是一个完整的注册(社交/非社交)+登录。已经看到了django-allauth,django-social-auth,django-social,但如果不进行大量黑客攻击,它仍然无法正常工作。听说,django注册和django配置文件可以让事情变得简单很多,但我无法处理。比如说, ~/.virtualenvs/plinter/lib/python2.7/sit
django.contrib.auth
进行了身份验证(登录),但我想得到的是一个完整的注册(社交/非社交)+登录。已经看到了django-allauth
,django-social-auth
,django-social
,但如果不进行大量黑客攻击,它仍然无法正常工作。听说,django注册
和django配置文件
可以让事情变得简单很多,但我无法处理。比如说,
~/.virtualenvs/plinter/lib/python2.7/site-packages/registration/backends/default/urls.py
需要一些小技巧才能工作:
# from django.views.generic.simple import direct_to_template
from django.views.generic import RedirectView
...
RedirectView.as_view(url='/registration/activation_complete.html'),
# direct_to_template,
# {'template': 'registration/activation_complete.html'},
...
Djangook给出了一些简单的例子。但是我不能在用户注册和登录上扩展它。
那么,有人能给kis举个工作注册和登录的例子吗?
更新
是一个简单的登录示例。现在,django allauth
或social auth或注册2
正在考虑中。。。
更新2
django allauth
似乎是简化身份验证的最佳解决方案。在设置中正确添加应用程序,注册fb/google/etc应用程序,通过管理员注册,并使用模板继承更改默认页面设计。是一个关于登录和合作的非常好的教程。它很好地解释了如何通过我们自己进行登录并覆盖现有的django登录页面
更新:
这里是注册和登录的概述。有关更多详细信息,请访问链接。
注册:
视图和URL
转到较低的站点文件夹(settings.py文件所在的位置)并打开
查看views.py文件。在顶部,确保以下导入是正确的
包括。如果没有,请添加:
from django.shortcuts import
render_to_response from django.http import HttpResponseRedirect from
django.contrib.auth.forms import UserCreationForm from
django.core.context_processors import csrf
下面添加以下函数(您可以将它们放在
登录功能):
打开站点文件夹中的URL.py文件(与
设置。py)。在urlpatterns=patterns(“”)下面,插入以下内容
台词
模板我们假设您的站点已经有了一个模板
目录和带有导航栏的base.html文件。打开
base.html文件,并在nav元素中添加导航菜单链接
登录页面
<a href="/accounts/register">register</a>
#或者,如果您想在他们登录时显示他们的用户名,请在视图中调用他们的用户名。将loggedin函数更改为:
def loggedin(request):
return render_to_response('registration/loggedin.html',
{'username': request.user.username})
打开站点文件夹中的URL.py文件(与settings.py文件夹相同)。
在urlpatterns=patterns(“”)下面,插入以下行
# Auth-related URLs:
url(r'^accounts/login/$', 'django.contrib.auth.views.login', name='login'),
url(r'^accounts/logout/$', 'django.contrib.auth.views.logout', name='logout'),
url(r'^accounts/loggedin/$', 'simplesite.views.loggedin', name='loggedin'),
simplesite是保存views.py的文件夹的名称
正在调用的文件。打开settings.py文件并单击底部的
插入LOGIN\u REDIRECT\u URL='/accounts/loggedin/'
。Django的默认值
是在登录时重定向到/accounts/profile,如果
您在该url上有一个配置文件页。如果没有,您需要更改
登录重定向url的默认设置为保存您的
loggedin.html页面
模板
我们假设您的站点已经有一个模板目录和一个
使用导航栏打开base.html文件。打开base.html文件并在
nav元素将导航菜单链接添加到登录页面
也添加注销链接
创建一个名为
在templates文件夹中注册。如果通过
命令行,键入mkdir registration创建一个名为login.html的文件,
将其保存到templates/registration文件夹,并使用
以下:
{% extends "base.html" %}
{% block title %}Log In{% endblock %}
{% block content %}
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="login" />
</form>
{% endblock %}
{% extends "base.html" %}
{% block title %}Logged In{% endblock %}
{% block content %}
<h2>You are logged in</h2>
{% endblock %}
{% extends "base.html" %}
{% block title %}Logged Out{% endblock %}
{% block content %}
<h2>Logged out!</h2>
<p><a href="/accounts/login/">Log back in</a></p>
{% endblock %}
创建一个名为loggedin.html的文件,将其保存到
模板/注册文件夹,并使用以下内容填充它:
{% extends "base.html" %}
{% block title %}Log In{% endblock %}
{% block content %}
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="login" />
</form>
{% endblock %}
{% extends "base.html" %}
{% block title %}Logged In{% endblock %}
{% block content %}
<h2>You are logged in</h2>
{% endblock %}
{% extends "base.html" %}
{% block title %}Logged Out{% endblock %}
{% block content %}
<h2>Logged out!</h2>
<p><a href="/accounts/login/">Log back in</a></p>
{% endblock %}
{%extends“base.html”%}
{%block title%}已登录{%endblock%}
{%block content%}
您已登录
{%endblock%}
如果您想显示用户名,您可以对
视图部分讨论的视图。然后更改loggedin.html
模板如下(根据需要更改措辞):
{%extends“base.html”%}
{%block title%}已登录{%endblock%}
{%block content%}
欢迎{{username}
感谢您登录
{%endblock%}
创建一个名为logged_out.html的文件,将其保存到
模板/注册文件夹,并用以下内容填充它:
{% extends "base.html" %}
{% block title %}Log In{% endblock %}
{% block content %}
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="login" />
</form>
{% endblock %}
{% extends "base.html" %}
{% block title %}Logged In{% endblock %}
{% block content %}
<h2>You are logged in</h2>
{% endblock %}
{% extends "base.html" %}
{% block title %}Logged Out{% endblock %}
{% block content %}
<h2>Logged out!</h2>
<p><a href="/accounts/login/">Log back in</a></p>
{% endblock %}
{%extends“base.html”%}
{%block title%}已注销{%endblock%}
{%block content%}
注销!
{%endblock%}
Trix的方法对我有效,但是注销链接重定向到管理员注销,而不是logged_out.html 为了修复重定向,我在href中添加了下一个选项:
<a href="{% url 'logout' %}?next={% url 'loggedout' %}">Logout</a>
最后,在URL.py中:
url(r'^myapp/loggedout/$', 'myapp.views.loggedout', name='loggedout'),
为什么你必须破解django注册?你使用的是django 1.5+?如果是,不要从pipy安装注册,它没有更新兼容性。改为从安装。添加
hg+https://bitbucket.org/ubernostrum/django-registration/downloads/django-registration-0.8.tar.gz
到requirements.txt
,将立即尝试。否,即与pipy中的版本相同。获取主干而不是标记:hg+https://bitbucket.org/ubernostrum/django-registration
$pip freeze | grep django registration
django registration==0.8
-同样的版本需要简单的
模块。这很奇怪,因为其他人也将此应用程序与dja一起使用ngo-1.5…您需要的版本是(0,9,0,'beta',1)
。如果您不知道您的安装与1.5不兼容,虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。如果您查看导师,报告代码不是一件简单的事情ial!我试着写一些基本的代码…@skyline75489:我希望现在的答案是可以接受的,那么请你删除你的否决票好吗?事实上我没有否决票。我只是在做事情的时候通过了这个答案
def loggedout(request):
return render_to_response('registration/loggedout.html')
url(r'^myapp/loggedout/$', 'myapp.views.loggedout', name='loggedout'),