2009-07-06 14 views
6

Hiện nay, trong mô-đun settings của tôi, tôi có điều này:Django: Năng động, LOGIN_URL biến

LOGIN_URL = '/login' 

Nếu tôi đã từng quyết định thay đổi URL đăng nhập trong urls.py, tôi sẽ phải thay đổi nó ở đây là tốt. Có cách nào năng động hơn để làm việc này không?

Trả lời

7

Cài đặt IS nơi bạn đang đặt url đăng nhập động của mình. Đảm bảo nhập LOGIN_URL từ settings.py trong số urls.py và sử dụng thay vào đó.

from projectname.settings import LOGIN_URL 
+0

Nhưng làm thế nào để tôi phù hợp với 'urlpatterns'? :/ –

+1

từ nhập django.conf.urls.defaults * từ nhập projectname.settings LOGIN_URL urlpatterns = patterns ('', (r '^ bài viết/2003 /' + LOGIN_URL + '/ $', 'tin tức. views.special_case_2003 '), – AlbertoPL

4

này làm việc cho tôi ... với LOGIN_URL = '/ tài khoản/đăng nhập'

Nếu vấn đề là rằng settings.py có ...

LOGIN_URL = '/login/' # <-- remember trailing slash! 

.. . but, urls.py muốn ...

url(r'^login/$', 
     auth_views.login, {'template_name': '/foo.html'}, 
      name='auth_login'), 

Sau đó, hãy thực hiện:

# - up top in the urls.py 
from django.conf import settings 

# - down below, in the list of URLs ... 
# - blindly remove the leading '/' & trust that you have a trailing '/' 
url(r'^%s$' % settings.LOGIN_URL[1:], 
     auth_views.login, {'template_name': '/foo.html'}, 
      name='auth_login'), 

Nếu bạn không thể tin tưởng bất cứ ai chỉnh sửa settings.py của bạn ... sau đó kiểm tra LOGIN_URL startswith một dấu gạch chéo & snip nó đi, hay không. ... và sau đó kiểm tra dấu gạch chéo cuối LOGIN_URL endswith một dấu gạch chéo & tack it on, hoặc không ... và sau đó tack vào '$'

+3

hoặc LOGIN_URL.lstrip ('/') –

Các vấn đề liên quan