2016-08-05 16 views
1

Welcher Teil dieser Ansicht veranlasst mich, auf diese URL zuzugreifen und warum kann nicht darauf zugegriffen werden? Ich habe es noch nie zuvor gesehen. Alles war in Ordnung auf meiner Entwicklungsmaschine und jetzt habe ich es in die Produktion auf einem Apache-Server verschoben und ich kann nicht herausfinden, wie man diesen Fehler löst.Django: Die angeforderte URL/accounts/login/wurde auf diesem Server nicht gefunden.

def new_user(request): 
    form = NewAccountForm(request.POST) 
    if form.is_valid(): 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 
     first_name = form.cleaned_data['first_name'] 
     last_name = form.cleaned_data['last_name'] 
     email = form.cleaned_data['email'] 

     try: 
      user = User.objects.create_user(username, email, password) 
     except: 
      return HttpResponse("That username is already taken. Please try a different one.") 

     user.first_name = first_name 
     user.last_name = last_name 
     user.save() 

     if bool(request.FILES.get('picture', False)): 
      pic = request.FILES.get('picture') 
      profile = Profile.objects.create(user=user) 
      profile.picture = pic 
      profile.save() 
     else: 
      user.delete() 
      return HttpResponse("Please upload a profile picture.") 

     user = authenticate(username=username, password=password) 
     login(request, user) 
     return redirect('home') 

    else: 
     return HttpResponse("The form you submitted was invalid. Please enter appropriate input.") 

Die Form Aktion, die diese Ansicht auslöst, ist:

<form action="app/new_user/" method="post" enctype="multipart/form-data"> 
+0

Ich denke, es ist die 'login' Funktion könnte aber jemand mehr Einsicht zur Verfügung stellen? – conjenks

+0

Es kann sein, "home" URL, wenn es authentifizierten Benutzer erfordert. Überprüfen Sie, ob der Benutzer ordnungsgemäß erstellt wurde und "authenticate" einen gültigen Benutzer zurückgibt. – Rohan

+0

Ich habe das gleiche Problem! Und außerdem scheint es zufällig zu sein! Ich habe eine Unity-Anwendung erstellt, wenn ich versuche, meine "eigene" Anmeldeansicht mit '@method_decorator (login_required)' zu bekommen, dann wird sie manchmal in die rechte Ansicht umgeleitet: '/ accounts/login /? Next =/de/j/login "und manchmal findet es diese Ansicht nicht und ich bekomme die Nachricht' Not Found:/accounts/login/'. –

Antwort

1

ich hatte das gleiche Problem. Ich verwende Klassenansichten, aber ich nehme an, Sie haben ein Problem wie meines. Das Problem kam aus der Tatsache, dass ich das Mischen login_required und ensure_csrf_cookie Richtlinien, wie folgt aus:

class JsonBase(generic.View): 

    @method_decorator(login_required) 
    @method_decorator(ensure_csrf_cookie) 
    def get(self, request, *args, **kwargs): 
     return JsonResponse({}, safe=False) 

Also dachte ich: wenn der Benutzer nicht verbunden ist, für die get Methode, egal, es ist ok, ich habe gerade Rückkehr ein leeres Json-Objekt, und in meinen Nachkommen Klassen, werde ich den Vergleich tun, wenn ich if request.user.is_authenticated: [blabla] brauche.

hier ist also meine letzte Arbeit „Basis“ Json Ansicht:

class JsonBase(generic.View): 

    @method_decorator(ensure_csrf_cookie) 
    def get(self, request, *args, **kwargs): 
     return JsonResponse({}, safe=False) 

    @method_decorator(ensure_csrf_cookie) 
    def post(self, request, *args, **kwargs): 
     return JsonResponse({}, safe=False)