日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 认证_Django 用户认证

發(fā)布時(shí)間:2025/3/19 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 认证_Django 用户认证 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

內(nèi)置用戶認(rèn)證

django 的用戶分為三類,匿名用戶,普通用戶,超級(jí)用戶

普通用戶是無法登錄admin 后臺(tái)的的,因此我們的普通視圖使用這個(gè)用戶來管理

超級(jí)用戶是最高權(quán)限,可以登錄admin后臺(tái),可以使用python manage.py createsuperuser 來創(chuàng)建一個(gè)超級(jí)用戶

內(nèi)置用戶類型

匿名用戶.

普通類型

普通用戶是無法登錄admin 后臺(tái)的的,因此我們的普通視圖使用這個(gè)用戶來管理

def create_user(self, username, email=None, password=None, **extra_fields):

extra_fields.setdefault('is_staff', False)

extra_fields.setdefault('is_superuser', False)

return self._create_user(username, email, password, **extra_fields)

超級(jí)用戶

超級(jí)用戶是最高權(quán)限,可以登錄admin后臺(tái),可以使用python manage.py createsuperuser 來創(chuàng)建一個(gè)超級(jí)用戶

def create_superuser(self, username, email, password, **extra_fields):

extra_fields.setdefault('is_staff', True)

extra_fields.setdefault('is_superuser', True)

用戶認(rèn)證模式 -1: 用戶名

我們?cè)谟脩糇?cè)界面使用的是用戶名稱

使用內(nèi)值的form from django.contrib.auth.forms import UserCreationForm

創(chuàng)建對(duì)應(yīng)的模板文件signup.html

Sign up

{% csrf_token %}

{{ form.as_p }}

Sign up

:views.py

def signup(request):

"""

使用用戶名來注冊(cè)

:param request:

:return:

"""

if request.method == 'POST':

form = UserCreationForm(request.POST)

if form.is_valid():

form.save()

username = form.cleaned_data.get('username')

raw_password = form.cleaned_data.get('password1')

user = authenticate(username=username, password=raw_password)

login(request, user)

return redirect('article-list')

else:

form = UserCreationForm()

return render(request, 'pre_user/signup.html', {'form': form})

截圖如下

用戶認(rèn)證模式2: 有附加字段

在某些特殊情況下我們可能會(huì)在用戶注冊(cè)的時(shí)候需要輸入生日這個(gè)樣子的字段,但是User 并不包含該字段,因此我們需要擴(kuò)展User 模型

models.py

class Profile(models.Model):

""" 多余字段注冊(cè) """

user = models.OneToOneField(User, on_delete=models.CASCADE)

bio = models.TextField(max_length=500, blank=True)

location = models.CharField(max_length=30, blank=True)

birth_date = models.DateField(null=True, blank=True)

@receiver(post_save, sender=User)

def update_user_profile(sender, instance, created, **kwargs):

if created:

Profile.objects.create(user=instance)

instance.profile.save()

forms.py

class SignUpForm(UserCreationForm):

birth_date = forms.DateField(help_text='Required. Format: YYYY-MM-DD')

class Meta:

model = User

fields = ('username', 'birth_date', 'password1', 'password2', )

views.py

django.contrib.auth import login, authenticate

django.shortcuts import render, redirect

pre_user.forms import SignUpForm

signup(request):

if request.method == 'POST':

form = SignUpForm(request.POST)

if form.is_valid():

user = form.save()

user.refresh_from_db() # load the profile instance created by the signal

user.profile.birth_date = form.cleaned_data.get('birth_date')

user.save()

raw_password = form.cleaned_data.get('password1')

user = authenticate(username=user.username, password=raw_password)

login(request, user)

return redirect('article-list')

else:

form = SignUpForm()

return render(request, 'pre_user/signup.html', {'form': form})

4 . 模板文件不需要修改

截圖

用戶認(rèn)證模式2: 郵箱注冊(cè)

這是最常見的用戶注冊(cè)模式

擴(kuò)展用戶創(chuàng)建的forms.py

class SignUpForm(UserCreationForm):

""" 使用郵箱注冊(cè)"""

email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

class Meta:

model = User

fields = ('username', 'email', 'password1', 'password2', )

views.py

(1) 注冊(cè)視圖

def signup(request):

if request.method == 'POST':

form = SignUpForm(request.POST)

if form.is_valid():

user = form.save(commit=False)

user.is_active = False

user.save()

current_site = get_current_site(request)

subject = 'Activate Your MySite Account'

message = render_to_string('pre_user/account_activation_email.html', {

'user': user,

'domain': current_site.domain,

'uid': urlsafe_base64_encode(force_bytes(user.pk)),

'token': account_activation_token.make_token(user),

})

# user.email_user(subject, message) # 給該用戶發(fā)送郵件

user.email_user(subject=subject, message='message',html_message=message) # 給該用戶發(fā)送郵件

return redirect('account_activation_sent')

# return HttpResponse("郵箱已經(jīng)發(fā)送,請(qǐng)前往驗(yàn)證")

else:

form = SignUpForm()

return render(request, 'pre_user/signup.html', {'form': form})

(2) 用戶激活郵箱

def activate(request, uidb64, token):

try:

uid = force_text(urlsafe_base64_decode(uidb64))

user = User.objects.get(pk=uid)

except (TypeError, ValueError, OverflowError, User.DoesNotExist):

user = None

if user is not None and account_activation_token.check_token(user, token):

user.is_active = True

user.profile.email_confirmed = True

user.save()

login(request, user)

return redirect('article-list')

else:

return render(request, 'pre_user/account_activation_invalid.html')

(3) 注冊(cè)鏈接

urls.py

urlpatterns = [

url(r'^signup/$', views.signup),

url(r'^login/$', auth_views.login,

{'template_name': 'pre_user/login.html', 'authentication_form': LoginForm}),

url(r'^activate/(?P[0-9A-Za-z_\-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',

views.activate, name='activate'),

url(r'^account_activation_sent/$', views.account_activation_sent, name='account_activation_sent'),

]

(4)模板

account_activation_email.html

{% extends 'pre_user/base.html' %}

{% block content %}

{% autoescape off %}

Hi {{ user.username }},

Please click on the link below to confirm your registration:

http://{{ domain }}{% url 'activate' uidb64=uid token=token %}

{% endautoescape %}

{% endblock %}

account_activation_sent.html

{% extends 'pre_user/base.html' %}

{% block content %}

郵件已經(jīng)發(fā)送

{% endblock %}

account_activation_invalid.html

{% extends 'pre_user/base.html' %}

{% block content %}

郵件格式不合法

{% endblock %}

總結(jié)

以上是生活随笔為你收集整理的python 认证_Django 用户认证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕88 | 插少妇视频 | 婷婷伊人综合中文字幕 | 精品人妻一区二区三区蜜桃 | 欧美伦理一区二区三区 | 免费观看全黄做爰的视频 | 日韩中文字幕亚洲精品欧美 | 午夜美女福利 | 国产亚洲精品网站 | 中文字幕最新在线 | 国模一区二区 | 女生张开腿给男生桶 | 草草影院第一页 | 日本免费在线视频观看 | 欧美精品黄色片 | 婷婷激情丁香 | 黄色国产 | 国产精品高潮呻吟 | 国产在线精品二区 | 韩日午夜在线资源一区二区 | 久久久精品免费观看 | 男生操女生网站 | 成熟丰满熟妇高潮xxxxx视频 | 欧美日韩综合一区二区 | 国产精品久久二区 | 99久久人妻无码精品系列 | 91av视频在线观看 | 人妻视频一区二区 | 秋霞一级视频 | 亚洲综合日韩精品欧美综合区 | 欧美日本激情 | 国内久久精品 | 日韩色一区 | 天天躁日日躁狠狠躁av | 岛国av免费看 | 精品国产一区二区三区久久久蜜臀 | 久精品国产 | 91中文字幕视频 | 国产爽爽视频 | 五月天婷婷在线观看 | 国产麻豆网| 日日摸日日操 | 在线免费观看污视频 | 不卡中文一二三区 | 人妻精品一区二区三区 | 欧美精品在线视频 | 亚洲精品久久久久久无码色欲四季 | 欧美 日韩 国产 激情 | 无码国产精品一区二区免费16 | 欧美亚洲一区二区三区 | 四季av国产一区二区三区 | 韩国av免费在线 | 黄色录像a| 动漫av网站免费观看 | 国产一级片在线播放 | 欧美亚洲国产另类 | 在线视频污 | 欧美黄色特级视频 | 少妇一区二区视频 | 久草资源站 | 特级一级片 | 40一50一60老女人毛片 | 国产精品91一区二区 | 香蕉视频国产 | 亚洲AV无码精品国产 | 久久久久久久99 | 黄网在线免费观看 | 波多野结衣一二三四区 | 久久av网址 | 蜜桃tv一区二区三区 | 国产亚洲美女精品久久久2020 | 日韩精品一区二区电影 | 久久免费看少妇 | 国产精品一区二区三区四区视频 | www.日韩.com | 怡春院在线视频 | 国产成人免费在线视频 | 成人免费入口 | 欧美黄片一区二区三区 | 91老肥熟| 久久婷婷五月综合 | 色伊人影院 | 在线视频黄 | 久草视频在线资源 | 久色精品 | 精品国偷自产一区二区三区 | 欧美日韩精品亚洲精品 | 国内偷拍一区 | 久久伊人一区二区 | 亚洲av无码不卡 | 11一12免费毛片 | 午夜动态图 | 国产精品一二三区在线观看 | 国产无码精品一区二区 | 舔花蒂| 国产小视频你懂的 | 精品一区二区三区免费观看 | 婷婷一区二区三区四区 | 天天干天天干 |