2016-10-03 3 views
2

オーケーを必要としていないときに、ユーザーが、私はそこにすべてを指定change_item許可が細かいジャンゴPermissionRequiredMixinは、ユーザーが許可を

from django.contrib.auth.mixins import PermissionRequiredMixin 

class MyView(PermissionRequiredMixin,View): 

    template = 'myapp/item_detail.html' 
    permission_required = 'myapp.change_item' 


    def get(self, request, *args, **kwargs): 
     #Query here 
     return render(request, self.template) 

しかし、働くたとき、私は、DjangoのPermissionRequiredMixinを使用して、このビューとイムを持って働いていません、それはではなく、これで...設定LOGIN_URLに設定し、他のすべてを完璧に動作のログイン

**Page not found (404) 
Request Method:  GET 
Request URL: http://127.0.0.1:8000/myapp/login?next=/myapp/item/35/** 
The current URL, myapp/login, didn't match any of these. 

を:ユーザ/私はそのmyappに言って404エラーページを持って、それを持って、それが有効ではありませんログインしていません私はまた、ログイン文字列が途中にあるのを見るエラーからのURL ...ミックスインについて何か不足していますか?何が間違っていますか?

私はurls.pyを追加します。

from django.conf.urls import url 
from .views.views_home import HomeView, WelcomeView 
from .views.views_authentication import LoginView, LogoutView, ChangePasswordView 

urlpatterns = [ 
    url(r'^welcome/$', WelcomeView.as_view(), name="welcome"), 
    url(r'^home/$', HomeView.as_view(), name="home"), 
    url(r'^login/$', LoginView.as_view(), name="login"), 
    url(r'^logout/$', LogoutView, name="logout"), 
    url(r'^change_password/$', ChangePasswordView.as_view(), name="change_password"), 

] 

およびスタックトレース:事前に

[03/Oct/2016 17:04:47] "GET /myapp/item/35/ HTTP/1.1" 302 0 
Not Found: /myapp/login 
[03/Oct/2016 17:04:47] "GET /myapp/login?next=/myapp/item/35/ HTTP/1.1" 404 32312 

感謝を!

答えて

1

PermissionRequiredMixinを使用する場合は、settings.pyでLOGIN_URLを使用して、ユーザーを現在のページにリダイレクトすることができます。 myapp/login /が正しい場所でない場合は、この設定を使用して正しい場所を指定してください。また、settings.LOGIN_URLを使用する代わりに、login_urlクラスメンバーをビューに追加するか、get_login_url()メソッドを追加することができます。

これらの事のすべては、あなたがurls.pyでエラーが発生していることを意味し、あなたがにリダイレクトユーザーを配置したい場所それが実際だ場合にmyappに/ログインが、正しい場所ではないと仮定し

最後になりましたが、 DRFを使用する場合は、PermissionRequiredMixinの代わりにDjangoModelPermissionsを使用するのが通例です。

+0

ありがとうございます。私がmyapp/loginの前に言ったように、それは正しい場所です、それはsettings.pyで設定され、login_requiredデコレータのような他のリダイレクションでもうまくいきます...何かが間違っているか分かりません... – jsanchezs

+0

確かに@ e4c5私はちょうどそれを追加しました – jsanchezs

+0

Oh申し訳ありませんが、あまりにもあります – jsanchezs

関連する問題