首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django保持干燥

如何在Django保持干燥
EN

Stack Overflow用户
提问于 2017-02-23 10:32:12
回答 1查看 99关注 0票数 0

我有一个供用户更改密码的Django url,如下所示:

代码语言:javascript
复制
url(r'^change-password$', views.user_change_password, name='change_password'),  
url(r'^change-password/done/$', views.user_changed_password, name='password_changed')

其中,views.user_change_password是:

代码语言:javascript
复制
def user_change_password(request):
    response = password_change(request,
                           template_name=r"Foo/Account/change_password.html",  
                           post_change_redirect=reverse('Foo:password_changed'))
    return response

这是可行的,但在我看来,必须在两个不同的位置指定查找名称password_changed违反了DRY的原则。

在Django中有没有处理这个问题的标准方法?

EN

回答 1

Stack Overflow用户

发布于 2017-02-23 11:53:21

我认为你所做的几乎就是标准的方法。至少从我在documentation中收集的信息来看。

似乎将名称定义为字符串会让您大吃一惊。我的理解是,它允许有趣的使用,如名称空间,跨模板和视图的透明使用,并使您不必在使用它的任何地方使用import

正如@Chris所指出的,你在urls.py中所做的就是定义url名称,然后在视图和模板中使用它。

您可能可以通过定义以下内容来添加更多级别的间接寻址:

代码语言:javascript
复制
my_url_name = 'password_changed'

但我看不出这是怎么回事DRYer。在反转url解析时,您需要:

代码语言:javascript
复制
reverse('Foo:' + my_url_name)

这也好不到哪里去。

简而言之,把它想象成一个用引号括起来的变量名。如果您需要重命名它,您将遇到与重命名变量时完全相同的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42405970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档