2017-02-23 18 views
0

У меня есть URL 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 в двух разных местах, нарушая принцип СУХОЙ.

Существует ли стандартный способ использования Django?

+2

Для меня это очень похоже на 'def myfunc (...)' и 'x = myfunc()', т. Е. Вы определяете что-то, а затем используете его. Я не уверен, сколько DRYer может получить ... –

+0

Я мог бы сделать это DRYer, определив его как константу в другом месте, а затем используя это в обоих местах. Я новичок в Django, поэтому мне было интересно, есть ли стандартный способ. – Batman

+0

@Batman, поэтому 'foo = 'foo'; bar = foo' не DRY, но почему-то 'baz = 'foo'; foo = baz; bar = baz' есть? – Chris

ответ

1

Я думаю, что вы делаете в значительной степени стандартный способ сделать это. По крайней мере, из того, что я собираю в documentation.

Кажется, что определение имен в виде строк - вот что отбрасывает вас. Я понимаю, что он позволяет интересное использование, такое как пространство имен, прозрачное использование шаблонов и представлений и экономия от import во всем мире, где вы его используете.

Как @ Крис указывает, что вы делаете в urls.py является определение имя URL-адрес, а затем в представлениях и шаблонов вы использовать его.

Вы могли бы добавить больше уровней косвенности пути определения:

my_url_name = 'password_changed' 

, но я не вижу, как это сушилка. При изменении адреса URL-адреса вам понадобится:

reverse('Foo:' + my_url_name) 

, который не намного приятнее.

Одним словом, подумайте об этом как о переменной в кавычках. Если вам нужно переименовать его, у вас будет такая же проблема, как при переименовании переменной.

 Смежные вопросы

  • Нет связанных вопросов^_^