国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Django用戶注冊和用戶配置擴(kuò)展

這篇具有很好參考價值的文章主要介紹了Django用戶注冊和用戶配置擴(kuò)展。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

本篇是在完成用戶登錄登出,密碼修改功能后,擴(kuò)展用戶注冊功能。

關(guān)于用戶登錄、注銷、更改密碼和重置密碼。請查看

Django身份驗證初試-CSDN博客

Django登錄注銷視圖-CSDN博客

Django密碼修改和重置視圖-CSDN博客

用戶注冊

創(chuàng)建一個表單,讓用戶輸入用戶名、真實姓名和密碼。
編輯位于account應(yīng)用程序目錄中的forms.py文件

from django.contrib.auth.models import User

class UserRegistrationForm(forms.ModelForm):
	password = forms.CharField(label='Passowrd',widget=forms.PasswordInput)
	password2 = forms.CharField(label='Repeat passowrd',widget=forms.PasswordInput)

	class Meta:
		model = User
		fields = ('username','first_name','email')
	
	def clean_password2(self):
		cd = self.cleaned_data
		if cd['password'] != cd['password2']:
			raise forms.ValidationError("Passwords don't match.")
		return cd['password2']
  • 表單中包含username,first_name,email字段,這些字段講根據(jù)它們對應(yīng)的模型進(jìn)行驗證。如果用戶填寫了一個已經(jīng)存在的用戶名,將得到一個驗證錯誤。因為username是一個用unique=True定義的字段。
  • 添加password和password2兩個字段,用來確認(rèn)密碼。
  • 定義了一個clean_password2方法,用于對照第一個密碼檢查第二個密碼,如果密碼不匹配,則不讓表單驗證。這個檢查是在調(diào)用is_valid方法時完成的。

??Django可以為任何表單字段提供clean_<fieldname>()方法,清楚特定字段的值或引發(fā)表單驗證錯誤。表單還包括一個通用的clean()方法來驗證整個表單,這對于驗證相互依賴的字段非常有用。

??Django還提供了一個UserCreationForm表單,它位于Django .contrib.auth.forms中,和剛才創(chuàng)建的表單非常相似。

編輯account應(yīng)用程序的views.py文件

from .forms import EmailPostForm,CommentForm,SearchForm,UserRegistrationForm

def register(request):
    if request.method == 'POST':
        user_form = UserRegistrationForm(request.POST)
        if user_form.is_valid():
            new_user = user_form.save(commit=False)
            new_user.set_password(user_form.cleaned_data['password'])
            new_user.save()
            template = "account/register_done.html"
            context = {'new_user':new_user}
            return render(request,template,context)
    else:
        user_form = UserRegistrationForm()

    template = "account/register.html"
    context = {'user_form':user_form}
    return render(request,template,context)

這里沒有保存用戶輸入的原始密碼,而是使用處理加密的用戶模型的set_password()方法進(jìn)行保存,以保證安全。

編輯account應(yīng)用的urls.py文件,添加如下URL模式:

path('register/',views.register,name='register'),

在account/ template目錄下創(chuàng)建一個新模板,命名為register.html,并使其看起來如下:

{% extends "base.html" %}
{% block title %}Create an account{% endblock %}
{% block content %}
    <h1>Create an account</h1>
    <p>Please, sign up using the following form:</p>
    <form action="." method="post">
        {{ user_form.as_p }}
        {% csrf_token %}
        <p><input type="submit" value="Create my account"></p>
    </form>
{% endblock %}

在同一目錄下添加一個模板文件,并將其命名register_done.html。將以下代碼添加到其中:

{% extends "base.html" %}
{% block title %}Welcome{% endblock %}
{% block content %}
    <h1>Welcome {{ new_user.first_name }}!</h1>
    <p>Your account has been successfully created. Now you can 
        <a href="{% url 'login' %}">log in</a>.</p>
{% endblock %}

用戶模型擴(kuò)展

編輯account應(yīng)用程序的models.py文件

from django.db import models
from django.conf import settings

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    date_of_birth = models.DateField(blank=True, null=True)
    photo = models.ImageField(upload_to='users/%Y/%m/%d',blank=True)
    
    def __str__(self):
        return 'Profile for user {}'.format(self.user.username)

??為了保持代碼的泛型,請使用get_user_model()方法檢索用戶模型和AUTH_USER_MODEL設(shè)置,以便在定義模型與用戶模型的關(guān)系時引用它,而不是直接引用auth用戶模型。

  • 用戶一對一字段允許您將配置文件與用戶關(guān)聯(lián)。on_delete參數(shù)使用CASCADE,這樣當(dāng)用戶被刪除時,它的相關(guān)配置文件也會被刪除。
  • 照片字段是一個ImageField字段。您需要安裝Pillow庫來處理圖像。

在shell中運(yùn)行以下命令安裝Pillow:
python -m pip install pillow

為了讓Django在開發(fā)服務(wù)器上為用戶上傳的媒體文件提供服務(wù),在項目的settings.py文件中添加以下設(shè)置:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
  • MEDIA_URL是為用戶上傳的媒體文件提供服務(wù)的基本URL,
  • MEDIA_ROOT是媒體文件所在的本地路徑。
  • Django動態(tài)地構(gòu)建相對于項目路徑的路徑,以使代碼更加通用。

編輯項目的主urls.py文件,修改代碼如下:

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

??Django開發(fā)服務(wù)器將負(fù)責(zé)在開發(fā)過程中提供媒體文件(也就是DEBUG設(shè)置為True時)。
static()輔助函數(shù)適合于開發(fā),但不適合生產(chǎn)使用。永遠(yuǎn)不要在生產(chǎn)環(huán)境中使用Django提供靜態(tài)文件。

編輯account應(yīng)用程序的admin.py文件,并在管理站點(diǎn)中注冊Profile模型,如下所示:

from django.contrib import admin
from .models import Profile

@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
    list_display = ['user','date_of_birth','photo']

讓用戶在網(wǎng)站上編輯自己的個人資料。

將以下導(dǎo)入和模型表單添加到account應(yīng)用程序的forms.py文件中:

class UserEditForm(forms.ModelForm):
	class Meta:
		model = User
		fields = ('first_name','last_name','email')

class ProfileEditForm(forms.ModelForm):
	class Meta:
		model = Profile
  • UserEditForm:允許用戶編輯自己的名字、姓氏和電子郵件,這些都是Django內(nèi)置用戶模型的屬性。
  • ProfileEditForm:這將允許用戶編輯我們保存在自定義概要模型中的概要數(shù)據(jù)。用戶將能夠編輯自己的出生日期,并上傳照片作為個人資料。

編輯account應(yīng)用程序的views.py文件并導(dǎo)入Profile模型,如下所示:

@login_required
def edit(request):
    if request.method == 'POST':
        user_form = UserEditForm(instance=request.user,data=request.POST)
        profile_form = ProfileEditForm(instance=request.user.profile,data=request.POST,files=request.FILES)
        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
    else:
        user_form = UserEditForm(instance=request.user)
        profile_form = ProfileEditForm(instance=request.user.profile)

    template = "account/edit.html"
    context = {'user_form':user_form}
    return render(request,template,context)
  • 使用login_required裝飾器是因為用戶必須經(jīng)過身份驗證才能編輯他們的配置文件。
  • UserEditForm用于存儲內(nèi)置用戶模型的數(shù)據(jù)
  • ProfileEditForm用于存儲自定義概要模型中的附加概要數(shù)據(jù)。
  • 為了驗證提交的數(shù)據(jù),將執(zhí)行兩個表單的is_valid()方法。如果兩個表單都包含有效的數(shù)據(jù),將保存兩個表單,調(diào)用save()方法來更新數(shù)據(jù)庫中相應(yīng)的對象。

將以下URL模式添加到account應(yīng)用程序的urls.py文件中:

{% extends "base.html" %}
{% block title %}Edit your account{% endblock %}
{% block content %}
    <h1>Edit your account</h1>
    <p>You can edit your account using the following form:</p>
    <form action="." method="post" enctype="multipart/form-data">
        {{ user_form.as_p }}
        {{ profile_form.as_p }}
        {% csrf_token %}
    <p><input type="submit" value="Save changes"></p>
    </form>
{% endblock %}

表單中包含enctype="multipart/form-data"來啟用文件上傳。
使用HTML表單來提交user_form和profile_form表單。文章來源地址http://www.zghlxwxcb.cn/news/detail-798707.html

到了這里,關(guān)于Django用戶注冊和用戶配置擴(kuò)展的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用Django Rest Framework設(shè)計與實現(xiàn)用戶注冊API

    在現(xiàn)代Web應(yīng)用開發(fā)中,RESTful API已成為前后端分離架構(gòu)中的關(guān)鍵組件。Django Rest Framework (DRF) 是一款基于Django的優(yōu)秀庫,提供了豐富的工具和接口,極大地簡化了RESTful API的設(shè)計與實現(xiàn)。本文將以用戶注冊功能為例,展示如何運(yùn)用DRF構(gòu)建一個完整的API端點(diǎn),包括數(shù)據(jù)驗證、模型

    2024年04月25日
    瀏覽(19)
  • Django基礎(chǔ)入門:后臺管理 超級用戶 數(shù)據(jù)表注冊操作③

    Django基礎(chǔ)入門:后臺管理 超級用戶 數(shù)據(jù)表注冊操作③

    ??????個人簡介:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實力新星認(rèn)證,阿里云社區(qū)專家博主 ????:Web全棧開發(fā)專欄:《Web全棧開發(fā)》免費(fèi)專欄,歡迎閱讀! ????: 文章末尾掃描二維碼可以加入粉絲交流群,不定期免費(fèi)送書。 Django 的后臺管理系統(tǒng)是非常出

    2024年02月11日
    瀏覽(89)
  • 【基于Django框架的在線教育平臺開發(fā)-02】用戶注冊功能開發(fā)

    【基于Django框架的在線教育平臺開發(fā)-02】用戶注冊功能開發(fā)

    用戶數(shù)據(jù)表如下所示: Field Type Extra id int Prime Key Auto Increment password varchar(128) last_login datetime(6) Allow Null is_superuser tinyint(1) username varchar(150) first_name varchar(150) last_name varchar(150) email varchar(254) is_staff tinyint(1) is_active tinyint(1) date_joined datetime(6) nick_name varchar(50) birthday date Allow Null

    2024年02月11日
    瀏覽(17)
  • Django實現(xiàn)用戶注冊登錄,表單提交后跳轉(zhuǎn)網(wǎng)頁(學(xué)習(xí)筆記)

    Django實現(xiàn)用戶注冊登錄,表單提交后跳轉(zhuǎn)網(wǎng)頁(學(xué)習(xí)筆記)

    效果圖如下: ? 使用命令提示符,進(jìn)入想存放項目的目錄: 在項目coco目錄下新建static文件夾,用于存放網(wǎng)頁文件的css,js,imgs 在coco_app目錄下新建文件夾templates,用于存放需要用到的HTML網(wǎng)頁 打開coco文件夾中的settings.py注冊coco_app 引用templates 連接數(shù)據(jù)庫,這里我用的MySQL數(shù)據(jù)

    2023年04月11日
    瀏覽(53)
  • Django使用DRF + Simple JWT 完成小程序使用自定義用戶的注冊、登錄和認(rèn)證

    Django使用DRF + Simple JWT 完成小程序使用自定義用戶的注冊、登錄和認(rèn)證

    在已經(jīng)配置好djangorestframework-simplejwt的前提下進(jìn)行 小程序用戶模型類 這里的模型類并未繼承django自帶的用戶模型類,好處是后面小程序用戶也是沒法進(jìn)行admin端的,缺點(diǎn)是可能會對django自帶的權(quán)限管理有影響,如果只有小程序端的用戶的話沒問題,但是如果還有其它用戶的話

    2024年02月10日
    瀏覽(23)
  • 用python編寫注冊登錄程序,python寫用戶注冊和登錄

    用python編寫注冊登錄程序,python寫用戶注冊和登錄

    大家好,小編來為大家解答以下問題,python注冊用戶名和密碼登錄,python編寫用戶注冊登錄系統(tǒng),現(xiàn)在讓我們一起來看看吧! 一、登錄和注冊 1. 案例介紹 本例設(shè)計一個用戶登錄和注冊模塊,使用 Tkinter 框架構(gòu)建界面,主要用到畫布、文本框、按鈕等組件。涉及知識點(diǎn):Pyt

    2024年04月26日
    瀏覽(25)
  • Python 使用tkinter設(shè)計Windows網(wǎng)頁或應(yīng)用的用戶注冊登錄界面

    Python 使用tkinter設(shè)計Windows網(wǎng)頁或應(yīng)用的用戶注冊登錄界面

    上一篇:Python 自定義模塊和包設(shè)計英語生詞本(文件版)-CSDN博客 緊接上一篇博文,當(dāng)我們熟練掌握自定義模塊和包、掌握文件的的讀取與寫入、掌握正則表達(dá)式內(nèi)置模塊\\\"re\\\"、掌握GUI(圖形界面)的部分組件后,接著我們將要以上的知識點(diǎn)結(jié)合起來,設(shè)計一個GUI(圖形界面

    2024年02月03日
    瀏覽(18)
  • 100 行代碼實現(xiàn)用戶登錄注冊與 RESTful 接口 - 手把手教程附 Python 源碼

    在開發(fā)大多數(shù)應(yīng)用時,用戶系統(tǒng)都是必不可少的部分,而我們總是需要開發(fā)圍繞用戶的登錄,注冊,獲取,更新等接口。在這篇文章將帶你用一百多行代碼簡潔地實現(xiàn)一套這樣的用戶鑒權(quán)與 RESTful 接口,并使用 Session 來處理用戶的登錄登出 我們將使用 UtilMeta 框架 完成接口開

    2024年02月19日
    瀏覽(26)
  • 當(dāng)前沒有源代碼管理提供程序進(jìn)行注冊 scanning folder for git repositories 沒有注冊配置remote.SSH.remotePlatform因此無法寫入用戶設(shè)置問題解決

    使用Windows平臺的VScode,利用Remote-SSH插件連接遠(yuǎn)程Ubuntu服務(wù)器,拉取Gerrit倉庫,出現(xiàn)問題如下: 遠(yuǎn)程連接SSH速度特別慢,通常要5分鐘以上 連接上去之后無法使用git,注意這里的git是 @builtin 插件,不是需要安裝的插件,環(huán)境很干凈 git顯示內(nèi)容一開始為 當(dāng)前沒有源代碼管理提

    2024年02月09日
    瀏覽(89)
  • 軟件著作權(quán)實名認(rèn)證怎么做?【用戶注冊】如何進(jìn)行用戶注冊?

    軟件著作權(quán)實名認(rèn)證怎么做?【用戶注冊】如何進(jìn)行用戶注冊?

    【用戶注冊】如何進(jìn)行用戶注冊? 第一步:進(jìn)入中國版權(quán)保護(hù)中心官網(wǎng),點(diǎn)擊右上角注冊。中國版權(quán)保護(hù)中心 (ccopyright.com.cn) ?第二步:進(jìn)入用戶注冊頁面,閱讀用戶協(xié)議,點(diǎn)擊【同意并繼續(xù)】按鈕。 第三步:選擇注冊的賬戶身份。著作權(quán)人是個人點(diǎn)擊個人,著作權(quán)人是公司

    2024年02月13日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包