2016-08-09 15 views
1

Fehler: Valueerror auf/gefolgt/n/ungültig wörtliche für int() mit Basis 10: ‚n‘

Eigentlich bekomme ich nicht, warum dieser Fehler auftreten, ich habe versucht, int() verwenden und Schwimmer(), aber scheint etwas

views.py

def followed(request, follow_to): 
    return render(request, "test.html",{'following':Following.objects.get(follow_to=follow_to), 
     'selfieList':Selfie.objects.filter(selfie_user=follow_to),}) 

Vorlage

{% for f in following %} 
     <a href="{% url 'followed' f.follow_to %}">{{f.follow_to}}</a> <br> 
    {% endfor %} 
zu arbeiten

urls.py

url(r'^followed/(?P<follow_to>[-\w]+)/$', followed, name='followed'), 

models.py

class Following(models.Model): 
    follow_from = models.ForeignKey("auth.User",related_name='from_person') 
    follow_to = models.ForeignKey("auth.User", related_name='to_person') 
    date_follow = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return unicode(self.follow_from) 

    def __str__(self): 
+0

Aus welcher Zeile stammt der Fehler? – Yaelle

+1

Mögliches Duplikat von [Django ungültiges Literal für int() mit Basis 10] (http://stackoverflow.com/questions/23394545/django-invalid-literal-fo-int-with-base-10) – an0o0nym

+0

Können Sie die Code des Formulars, wo Sie die Anfrage auch einreichen? –

Antwort

1

Sie haben Problem mit diesem Stück Code aus Ihrer Sicht.

Following.objects.get(follow_to=follow_to) 

Hier ist der follow_to Parameter Zeichenfolge anzuzeigen weitergegeben und von der URL erwähnt es scheint, es 'n' ist. Aber Sie suchen nach einem Fremdschlüssel, der nach id eines Objekts sucht. id ist eine ganze Zahl.

So versucht es in der Abfrage 'n' in int zu suchen, um das entsprechende Objekt zu suchen. Aber die Konvertierung schlägt fehl.

Sie müssen entweder überprüfen und/oder id bezogenen Regex in URL für follow_to Parameter verwenden.

1

Wenn das Modell django.contrib.auth.models.User verwendet wird, ist pk eine Ganzzahl. Das URL-Muster entspricht jedoch einem beliebigen Wortzeichen (\w). Wenn also nur Zahlen erlaubt sein sollten, könnte das Modifizieren von urls.py, um nur Integer-ID-Übereinstimmungen zuzulassen, eine Lösung sein.

url(r'^followed/(?P<follow_to>\d+)/$', followed, name='followed'), 
Verwandte Themen