Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django注册和登录-通过示例说明_Django_Forms_Authentication_Login_Registration - Fatal编程技术网

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