gpt4 book ai didi

Django 注册和登录 - 举例说明

转载 作者:行者123 更新时间:2023-12-04 06:04:33 25 4
gpt4 key购买 nike

有人可以用尽可能简单的语言详细解释如何进行注册和认证吗?我使用 django.contrib.auth 进行了身份验证(登录)但我想要的是完整的注册(社交/非)+登录。已经看到django-allauth , django-social-auth , django-social但如果不进行大量黑客攻击,仍然无法使其正常工作。听说django-registrationdjango-profiles可以让它更容易,但我无法处理。例如,

~/.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'},
...

DjangoBook 给出了 Contact and search forms 的简单示例.但我无法在用户注册和登录上扩展它。
那么任何人都可以举出工作注册和登录的例子吗?
更新
Here是一个简单的登录示例。现在 django-allauth或社会认证或 registration2正在考虑...
更新2 django-allauth似乎是更容易进行身份验证的最佳解决方案。在设置中正确添加应用程序,注册 fb/google/etc 应用程序并通过管理员注册并使用模板继承来更改默认页面设计。

最佳答案

THIS很好关于 login & Co 的教程。它很好地解释了如何通过我们自己执行登录广告覆盖现有的 django 登录页面。

更新:

这里是注册和登录的概述。有关更多详细信息,请访问链接。

注册:

Views and URLs

Go to the lower site folder (where the settings.py file is) and open the views.py file. At the top make sure the following imports are included. Add them if not:

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

Below that add the following functions (you can put them after the Login functions):

 def
register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register/complete')

else:
form = UserCreationForm()
token = {}
token.update(csrf(request))
token['form'] = form

return render_to_response('registration/registration_form.html', token)

def registration_complete(request):
return render_to_response('registration/registration_complete.html')

Open the urls.py file in the site folder (same folder as settings.py). Below urlpatterns = patterns('', insert the following lines.

     # Registration URLs
url(r'^accounts/register/$', 'simplesite.views.register', name='register'),
url(r'^accounts/register/complete/$', 'simplesite.views.registration_complete',
name='registration_complete'),

Templates We will assume your site already has a templates directory and a base.html file with the navigation bar. Open the base.html file and in the nav element add a navigation menu link to the login page

<a href="/accounts/register">register</a>

If one does not already exist, go to the templates folder and create a folder inside it named registration. Create a file called registration_form.html, save it to the templates/registration folder, then populate it with the following:

{% extends "base.html" %} {% block title %}Register{%
endblock %} {% block content %}

<h2>Registration</h2>

<form action="/accounts/register/" method="post">{% csrf_token %}
{{form.as_p}} <input type="submit" value="Register" />

</form>

{% endblock %}

Create a file called registration_complete.html, save it to the templates/registration folder, and populate it with the following:

{% extends "base.html" %} {% block title %}You are
Registered{% endblock %} {% block content %}

<h2>Thank you for Registering</h2> <p><a
href="/accounts/login/">Please Login</a></p>

{% endblock %}


登录:

Views and URLs Open the views.py file in the lower site folder (where the settings.py file is). If there isn't one then create and save it. At the top of the file insert the following import: from django.shortcuts import render_to_response Below that you only need to add one function rendering the loggedin page. The other functions (login and logout) are in the views.py file in the Django Auth folder.

def loggedin(request):
return render_to_response('registration/loggedin.html')

# Optionally, if you want to show their username when they login then call their username in the view. Change the loggedin function to:

def loggedin(request):
return render_to_response('registration/loggedin.html',
{'username': request.user.username})

Open the urls.py file in the site folder (same folder as settings.py). Below urlpatterns = patterns('', insert the following lines.

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

With simplesite being the name of the folder that holds the views.py file that you are calling. Open the settings.py file and at the bottom insert LOGIN_REDIRECT_URL = '/accounts/loggedin/'. Django's default is to redirect to /accounts/profile when you log in, which is fine if you have an profile page at that url. If not you need to change your settings default for the Login redirect url to the one holding your loggedin.html page.

Templates

We will assume your site already has a templates directory and a base.html file with the navigation bar. Open the base.html file and in the nav element add a navigation menu link to the login page <a href="/accounts/login">login</a> Add a logout link too <a href="/accounts/logout">logout</a> Create a directory called registration inside the templates folder. If you do this through the command line, type mkdir registration Create a file called login.html, save it to the templates/registration folder, and populate it with the following:

{% 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 %}

{{ form.as_table }} uses the Django Forms module to create the form. You can create an unformatted form by using {{ form }} without the HTML table tags, or have each field put inside paragraph tags with {{
form.as_p }}
, or as an unordered list {{ form.as_ul }}. Optionally, you can also lay out your own form structure and use the form field tags as follows:

{% extends "base.html" %}
{% block title %}Log In{% endblock %}
{% block content %}

<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}

{% if form.errors %}
<p>Your Username or Password were not entered correctly. Please try again.</p>
{% endif %}

<table>
<tr>
<td>{{ form.username.label_tag }}</td>
<td>{{ form.username }}</td>
<td>{{ form.username.errors }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
<td>{{ form.password.errors }}</td>
</tr>
</table>

<input type="submit" value="login" />
</form>

{% endblock %}

Create a file called loggedin.html, save it to the templates/registration folder, and populate it with the following:

{% extends "base.html" %}
{% block title %}Logged In{% endblock %}
{% block content %}

<h2>You are logged in</h2>

{% endblock %}

If you want to display the username, you would make the adjustment to the view discussed in the views section. Then change the loggedin.html template to the below (change the wording as you see fit):

{% extends "base.html" %}
{% block title %}Logged In{% endblock %}
{% block content %}

<h1>Welcome {{username}}</h1>
<p>Thank you for logging in.</p>
<p><a href="/accounts/logout/">Logout</a></p>

{% endblock %}

Create a file called logged_out.html, save it to the templates/registration folder and populate it with the following:

{% 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 %}

关于Django 注册和登录 - 举例说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16901970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com