Tôi mới để stackoverflow và để django ...django newbie: cố gắng đảo ngược auth.views.login trong login_required() trang trí
Câu hỏi ngắn gọn (xem bên dưới cho "câu hỏi dài"), đoạn mã sau trong MyApps/views.py thất bại:
from django.core.urlresolvers import reverse
...
@login_required(login_url=reverse('django.contrib.auth.views.login'))
def my_view(request):
pass
lỗi này là:
ViewDoesNotExist at/
tried my-view2 in module myproject.myapps.views. Error was: 'module' object has no attribute 'my-view2'
'my-View2' được định nghĩa trong MyApps/views.py sau khi tôi xem (và được tham chiếu trong myproject/urls.py)
Tôi đoán có gì đó giống như gà và trứng ở đây nhưng tôi không thể tìm ra nơi tôi sai. tôi cố gắng thiết lập LOGIN_URL trong settings.py như thế với các lỗi tương tự:
from django.core.urlresolvers import reverse
...
LOGIN_URL=reverse('django.contrib.auth.views.login')
câu hỏi Bây giờ lâu (những gì bối cảnh, lý do tại sao tôi muốn làm điều đó):
làm việc với django 1.3.1 tôi có chế độ xem sau, được bảo vệ bằng auth.decorator:
@login_required
def my_view(request)
pass
Trang trí này chuyển hướng mặc định đến/accounts/login (nó hoạt động và điều đó tốt cho tôi).
Sử dụng máy chủ developpement toàn bộ các url có liên quan đến localhost:/
Trong production server (sử dụng wsgi), toàn bộ các url có liên quan đến my-server:/path1/ Đây là do cấu hình apache mà nói điều gì đó như: WSGIScriptAlias / path1 /var/www/path/to/script.wsgi
Và điều đó tốt cho tôi.
Tất cả các url được xác định trong myproject/urls.py có liên quan tự động với đường dẫn mới này, do đó, nhờ django, tất cả trang web của tôi đang làm việc trên "root html" mới này.
Nhưng quan điểm bảo vệ của tôi vẫn chuyển hướng đến my-server:/tài khoản/đăng nhập/thay o my-server:/path1/tài khoản/Đăng nhập
cho đến nay tôi làm cho nó hoạt sử dụng settings.py
LOGIN_URL=/path1/accounts/login/
hoặc sử dụng tham số LOGIN_URL của "login_required" trang trí:
@login_required(login_url="/path1/accounts/login/")
Nhưng tôi muốn rằng quan điểm đăng nhập này có liên quan đến các con đường trang web toàn bộ mà không cần cấu hình "path1" trong cả hai apache và django/settings.py
Tôi không cảm thấy việc sử dụng ngược lại trong settings.py là điều đúng để làm cũng không sử dụng nó trong trình xem trang trí. Nhưng cho đến nay tôi không biết cách xử lý này ...
u có thể đăng url của bạn không? –
bạn có thực sự có chế độ xem được định nghĩa là 'my-view2' không? Nó không phải là một tên trăn hợp lệ, '-' là một toán tử. Nếu bạn làm thế, bạn nên đổi tên nó thành 'my_view2'. – brutasse