1. 程式人生 > 其它 >python+selenium自動化指令碼-查詢ip歸屬

python+selenium自動化指令碼-查詢ip歸屬

Auth模組簡介

  auth模組是Django自帶的用來解決使用者註冊、登入、修改密碼等功能的使用者認證系統,可以方便的讓我們完成許多功能。

 

 auth模組相關方法

建立超級使用者(管理員)
    python3 manage.py createsuperuser
# 1.比對使用者名稱和密碼是否正確
user_obj = auth.authenticate(request,username=username,password=password)
# 括號內必須同時傳入使用者名稱和密碼
print(user_obj)  # 使用者物件  jason   資料不符合則返回None
print
(user_obj.username) # jason print(user_obj.password) # 密文 # 2.儲存使用者狀態 auth.login(request,user_obj) # 類似於request.session[key] = user_obj # 主要執行了該方法 你就可以在任何地方通過request.user獲取到當前登陸的使用者物件 # 3.判斷當前使用者是否登陸 request.user.is_authenticated() # 4.獲取當前登陸使用者 request.user # 5.校驗使用者是否登陸裝飾器 from django.contrib.auth.decorators import
login_required # 區域性配置 @login_required(login_url='/login/') # 全域性配置 LOGIN_URL = '/login/' 1.如果區域性和全域性都有 該聽誰的? 區域性 > 全域性 2.區域性和全域性哪個好呢? 全域性的好處在於無需重複寫程式碼 但是跳轉的頁面卻很單一 區域性的好處在於不同的檢視函式在使用者沒有登陸的情況下可以跳轉到不同的頁面 # 6.比對原密碼 request.user.check_password(old_password) # 7.修改密碼 request.user.set_password(new_password) #
僅僅是在修改物件的屬性 request.user.save() # 這一步才是真正的操作資料庫 # 8.登出 auth.logout(request) # 9.註冊 # 操作auth_user表寫入資料 User.objects.create(username=username,password=password) # 寫入資料 不能用create 密碼沒有加密處理 # 建立普通使用者 User.objects.create_user(username=username,password=password) # 建立超級使用者(瞭解):使用程式碼建立超級使用者 郵箱是必填的 而用命令建立則可以不填 User.objects.create_superuser(username=username,email='[email protected]',password=password)

擴充套件auth表

from django.db import models
from django.contrib.auth.models import User,AbstractUser
# Create your models here.

# 第一種:一對一關係  不推薦
# class UserDetail(models.Model):
#     phone = models.BigIntegerField()
#     user = models.OneToOneField(to='User')


# 第二種:面向物件的繼承
class UserInfo(AbstractUser):
    """
    如果繼承了AbstractUser
    那麼在執行資料庫遷移命令的時候auth_user表就不會再創建出來了
    而UserInfo表中會出現auth_user所有的欄位外加自己擴充套件的欄位
    這麼做的好處在於你能夠直接點選你自己的表更加快速的完成操作及擴充套件
    
    前提:
        1.在繼承之前沒有執行過資料庫遷移命令
            auth_user沒有被建立,如果當前庫已經建立了那麼你就重新換一個庫
        2.繼承的類裡面不要覆蓋AbstractUser裡面的欄位名
            表裡面有的欄位都不要動,只擴充套件額外欄位即可
        3.需要在配置檔案中告訴django你要用UserInfo替代auth_user(******)
            AUTH_USER_MODEL = 'app01.UserInfo'
                                '應用名.表名'
    """
    phone = models.BigIntegerField()
    
    
"""
你如果自己寫表替代了auth_user那麼
auth模組的功能還是照常使用,參考的表頁由原來的auth_user變成了UserInfo
"""