簡體   English   中英

如何在Django中保持DRY

[英]How to Stay DRY in Django

我有一個供用戶更改其密碼的Django網址,如下所示:

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為:

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中是否有處理此問題的標准方法?

我認為您正在執行的操作幾乎是標准方法。 至少從我收集的文檔中可以得出。

似乎將名稱定義為字符串會讓您大跌眼鏡。 我的理解是,它允許使用諸如命名空間之類的有趣用途,跨模板和視圖透明使用,並避免您在任何使用它的地方import

正如@Chris所指出的那樣,您在urls.py所做的是定義 url名稱,然后在視圖和模板中使用它。

您可以通過定義以下內容來添加更多級別的間接:

my_url_name = 'password_changed'

但是我不知道那是DRYer。 反轉網址解析時,您需要:

reverse('Foo:' + my_url_name)

這不是更好。

簡而言之,可以將其視為引號中的變量名稱。 如果需要重命名,將遇到與重命名變量時完全相同的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM