如何修改django auth.user 的默认get_absolute_url值

#Django#User的urls设置问题在你使用了UserProfile之后将会出现一个问题,就是User Model 的get_absolute_url在django的auth app中默认是/users/<username>/, 如果你已经扩展实现了一个UserProfile的话,你可能需要使用userprofile.get_absolute_url来使用,那么你需要重新定义auth.user的绝对url了.

auth.models 中的user的get_absolute_url是这样定义的:

    def get_absolute_url(self):
        return "/users/%s/" % urllib.quote(smart_str(self.username))

这里定死了吧,但是django还是给了方法来修改它.

方法就是:在settings.py中增加一个设置:ABSOLUTE_URL_OVERRIDES 

ABSOLUTE_URL_OVERRIDES = {
    'blogs.weblog': lambda o: "/blogs/%s/" % o.slug,
    'news.story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}

所以对auth.user来说,要修改就按照下面的来:


ABSOLUTE_URL_OVERRIDES = {
 'auth.user': lambda u: "/member/profile/%s/" % u.username,
 #其他的设置 
} 


官方文档:https://docs.djangoproject.com/en/1.1/ref/settings/#absolute-url-overrides 

https://code.djangoproject.com/wiki/ReplacingGetAbsoluteUrl



### DjangoAUTH_PASSWORD_VALIDATORS 的配置说明 #### 配置位置 通常情况下,`AUTH_PASSWORD_VALIDATORS` 的配置会被放置在项目的 `settings.py` 文件中。通过该配置项,开发者可以定义一系列密码验证器来增强应用的安全性。 --- #### 各验证器的功能与用法 1. **UserAttributeSimilarityValidator** 此验证器用于防止用户设置与其个人信息相似的密码。它会比较用户的用户名、电子邮件地址以及其他自定义字段的内容,判断新密码是否过于接近这些属性[^1]。 ```python { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', } ``` 2. **MinimumLengthValidator** 这是一个基础的密码长度校验器,确保用户所设密码至少达到指定的最小长度。默认情况下,Django 设置的最小长度为 8 字符,但可以通过调整 `OPTIONS['min_length']` 来更改这一数^[]^。 ```python { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 'OPTIONS': {'min_length': 8}, } ``` 3. **CommonPasswordValidator** 它的作用是阻止用户使用常见的弱密码(例如 "password", "12345678")。此验证器内部维护了一个预定义的常见密码列表,并将其作为对比依据[^2]^[]^。 ```python { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', } ``` 4. **NumericPasswordValidator** 数字型密码验证器旨在避免用户仅依赖纯数字组合创建密码。如果检测到密码完全由数字构成,则会触发错误提示^[]^。 ```python { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', } ``` 5. **扩展验证器 (可选)** 开发者还可以引入第三方库或自定义逻辑进一步强化安全性。例如,在引用[3]中提到的一个复杂度验证器能够强制要求密码包含特定数量的大写字母、小写字母以及特殊字符等[^3]^[]^: ```python { 'NAME': 'django_password_validators.password_character_requirements.password_validation.PasswordCharacterValidator', 'OPTIONS': { 'min_length_digit': 1, 'min_length_alpha': 1, 'min_length_special': 1, 'min_length_lower': 1, 'min_length_upper': 1, 'special_characters': "~!@#$%^&*()_+{}\":;'[]." }, } ``` --- #### 密码哈希算法的选择 除了上述验证机制外,为了保护存储于数据库中的用户凭证免受攻击威胁,建议合理选用合适的加密方式处理明文数据。Django 默认支持多种哈希函数供开发人员灵活切换,具体差异可见参考资料部分[^4]^[]^。 --- #### 登录功能集成实例 当完成以上所有准备工作之后,最后一步便是将认证体系嵌入实际业务流程当中。借助内置模块简化操作步骤如下所示[^5]^[]^: ```python # urls.py from django.urls import path, include urlpatterns = [ ... path('accounts/', include('django.contrib.auth.urls')), ] ``` 这样便能快速启用一套完整的账户管理接口集合,其中包括注册表单提交后的自动检验环节调用了前述各项规则约束条件加以审核确认无误后再予以保存入库记录动作执行完毕结束整个过程描述完毕总结全文内容要点回顾重点强调注意事项提醒读者注意实践过程中可能遇到的一些潜在风险因素提前做好预防措施规划方案设计思路分享经验教训吸取前车之鉴不断优化改进提升整体质量水平达成预期目标效果最大化实现双赢局面共赢未来发展趋势展望前景光明美好愿景共同奋斗努力拼搏共创辉煌成就梦想成真! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值