中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

找手工活帶回家做的找工作哪個(gè)網(wǎng)站最靠譜內(nèi)容營(yíng)銷

找手工活帶回家做的找工作哪個(gè)網(wǎng)站最靠譜,內(nèi)容營(yíng)銷,動(dòng)畫專業(yè)大學(xué)排名,wordpress 網(wǎng)站加密插件一、直接使用session傳遞登錄狀態(tài)(不推薦,但能用) 這是最簡(jiǎn)單、最直接的方法。 1.登錄視圖添加標(biāo)識(shí) 添加登錄狀態(tài)標(biāo)識(shí) request.session[is_logged_in] False def user_login(request):# 這是一個(gè)登錄狀態(tài)標(biāo)識(shí)request.session[is_logged_in] Falseif request.…

一、直接使用session傳遞登錄狀態(tài)(不推薦,但能用)

這是最簡(jiǎn)單、最直接的方法。

1.登錄視圖添加標(biāo)識(shí)

添加登錄狀態(tài)標(biāo)識(shí)

request.session['is_logged_in'] = False

def user_login(request):# 這是一個(gè)登錄狀態(tài)標(biāo)識(shí)request.session['is_logged_in'] = Falseif request.method == 'GET':......form = LoginForm(data=request.POST)# 查詢數(shù)據(jù)庫(kù)驗(yàn)證用戶名和密碼是否匹配user_obj = models.UserInfo.objects.filter(password=form.cleaned_data.get('password'),......).first()if not user_obj:form.add_error('password', '用戶名或密碼錯(cuò)誤')......# 用戶信息request.session['info'] = {'id': user_obj.id, 'username': user_obj.username}# 設(shè)置 session 過期時(shí)間為30分鐘request.session.set_expiry(60 * 30)# login(request, user)if user_obj is not None:# 添加登錄后的信息# 比如添加一個(gè)標(biāo)志到session中request.session['is_logged_in'] = Truereturn redirect('/user/list/')return render(request, 'login.html', {'form': form})

2.目標(biāo)視圖判斷登錄標(biāo)識(shí)

def user_list(request):"""查詢用戶列表"""# 獲取所有用戶列表(查詢集)[obj,obj,obj]if request.session['is_logged_in']:queryset = models.UserInfo.objects.all()# 請(qǐng)求,模板名稱,上下文return render(request=request, template_name='user_list.html', context={"queryset": queryset})else:return redirect('/login/')

二、使用Django自帶的login()函數(shù)判斷

1.關(guān)于login()函數(shù)

導(dǎo)入login模塊

from django.contrib.auth import login

login函數(shù)傳參

def login(request, user, backend=None):

user一定是要經(jīng)過authenticate模塊驗(yàn)證過的。

這里傳遞過來的user信息會(huì)基于默認(rèn)的用戶信息模塊做進(jìn)一步的處理。

這個(gè)在setting.py文件中可以自定義

AUTH_USER_MODEL = 'appname.modelname'
# 它的默認(rèn)值是'django.contrib.auth.models.User'

2.關(guān)于user信息的獲取(authenticate模塊)

user信息獲取默認(rèn)是在User模塊中,對(duì)應(yīng)的數(shù)據(jù)表是創(chuàng)建項(xiàng)目時(shí)自動(dòng)創(chuàng)建的auth_user表,這個(gè)表存儲(chǔ)著Django自帶的管理系統(tǒng)后臺(tái)的用戶信息。

from django.contrib.auth.models import User

導(dǎo)入authenticate模塊

from django.contrib.auth import authenticate

函數(shù)中有一句:

for backend, backend_path in _get_backends(return_tuples=True):......user = backend.authenticate(request, **credentials)......

說明了authenticate模塊在嘗試每個(gè)后端(backend)認(rèn)證方式

_get_backends()會(huì)從settings.py中讀取AUTHENTICATION_BACKENDS定義的后端路徑

3.后端認(rèn)證

AUTHENTICATION_BACKENDS是Django設(shè)置中的一個(gè)參數(shù),它定義了用于身份驗(yàn)證的后端認(rèn)證方式。這個(gè)參數(shù)是一個(gè)字符串列表,包含Django認(rèn)證系統(tǒng)使用的認(rèn)證后端類的全名。這個(gè)是可以自定義的。

默認(rèn)情況下,Django使用ModelBackend作為身份驗(yàn)證后端,它基于Django中的用戶模型進(jìn)行身份驗(yàn)證。除此之外,Django還提供了其他的身份驗(yàn)證后端,如LDAPBackend、RemoteUserBackend等,也可以自定義身份驗(yàn)證后端。

如果需要自己寫一個(gè)后端認(rèn)證,需要繼承ModelBackend這個(gè)模塊

class CustomBackend(ModelBackend):"""繼承ModelBackend類,重寫authenticate()方法自定義用戶驗(yàn)證后端"""def authenticate(self, request, username=None, **kwargs):  # 參數(shù)username實(shí)際是用戶輸入的登錄賬號(hào)user = User.objects.get(Q(username=username))return user

4.之后

如果你是使用的auth_user來存儲(chǔ)用戶信息的,那么就可以直接在登錄頁(yè)面寫入函數(shù)

user = authenticate(request, username='admin')
login(request,user)

然后在你需要登錄后才能進(jìn)入的視圖前加上裝飾器

from django.contrib.auth.decorators import login_required
# @login_required
def my_view(request):......

另外在setting.py文件寫入未登錄狀態(tài)需要重定向的路由

LOGIN_URL = '/login/'

如果你不是使用的auth_user來存儲(chǔ)用戶信息,而是使用的自定義表,在你設(shè)置

AUTH_USER_MODEL = 'appname.modelname'

之后runserver,會(huì)報(bào)和以下這個(gè)大同小異的錯(cuò)誤,即使你makemigrations和migrate操作之后,仍然會(huì)報(bào)這個(gè)錯(cuò)誤

AttributeError: type object 'UserInfo' has no attribute 'REQUIRED_FIELDS'

那么就需要重新定義自己的模塊中的class User(),需要繼承AbstractUser類

其實(shí)User模型類本身也是直接繼承自AbstractUser,所以自定義一個(gè)繼承自AbstractUser的子類就相當(dāng)于是定義另一個(gè)新的User

可以參考:

https://www.cnblogs.com/guyuyun/p/13912386.html

http://m.risenshineclean.com/news/61517.html

相關(guān)文章:

  • 專門做淘寶特價(jià)的網(wǎng)站網(wǎng)站模板免費(fèi)下載
  • 網(wǎng)站開發(fā)需求表模板個(gè)人網(wǎng)站制作模板主頁(yè)
  • 比較著名的seo網(wǎng)站點(diǎn)擊器免費(fèi)版
  • 做網(wǎng)站和網(wǎng)頁(yè)區(qū)別省委副書記
  • ps怎么做網(wǎng)站首頁(yè)和超鏈接注冊(cè)一個(gè)公司網(wǎng)站需要多少錢
  • 汕頭網(wǎng)站建設(shè)備案關(guān)鍵詞優(yōu)化seo外包
  • 做外貿(mào)要看哪些網(wǎng)站app運(yùn)營(yíng)推廣策劃方案
  • 濮陽(yáng)做網(wǎng)站建設(shè)的公司最好的推廣平臺(tái)排名
  • 上海品牌網(wǎng)站建設(shè)公司廣州市口碑seo推廣
  • 自己做的網(wǎng)站怎么設(shè)置文件下載seo優(yōu)化顧問服務(wù)
  • 如何做網(wǎng)站標(biāo)頭長(zhǎng)沙seo排名公司
  • 惠州+網(wǎng)站建設(shè)公司南昌seo管理
  • 萍鄉(xiāng)做網(wǎng)站的公司競(jìng)價(jià)托管 微競(jìng)價(jià)
  • 南宮做網(wǎng)站seo快速推廣竅門大公開
  • 運(yùn)營(yíng)seo是什么意思群排名優(yōu)化軟件
  • 酒業(yè)網(wǎng)站建設(shè)優(yōu)化大師免費(fèi)版下載
  • 陽(yáng)江網(wǎng)站seo公司提供seo服務(wù)
  • 義烏網(wǎng)站建設(shè)多少錢百度短鏈接在線生成
  • 如何編輯網(wǎng)站標(biāo)題欄美國(guó)搜索引擎排名
  • 去哪找想做網(wǎng)站的客戶重慶seo小潘大神
  • 鄭州營(yíng)銷型網(wǎng)站建設(shè)哪家好韶關(guān)網(wǎng)站seo
  • 南寧網(wǎng)站建設(shè)報(bào)價(jià)免費(fèi)注冊(cè)網(wǎng)址
  • 卡盟網(wǎng)站怎么做圖片素材公司官網(wǎng)制作多少錢
  • 怎么查詢網(wǎng)站所有關(guān)鍵詞怎樣進(jìn)行網(wǎng)絡(luò)推廣效果更好
  • 長(zhǎng)沙做網(wǎng)站建設(shè)公司排名沈陽(yáng)seo公司
  • 武漢公司做網(wǎng)站可口可樂營(yíng)銷策劃方案
  • WordPress默認(rèn)模板做的站軟件培訓(xùn)班
  • 基金管理公司司網(wǎng)站建設(shè)要求百度推廣區(qū)域代理
  • 做宣傳單用什么網(wǎng)站找圖片優(yōu)化培訓(xùn)方式
  • 修改wordpress代碼加快打開速度seo怎么做關(guān)鍵詞排名