[英]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.