2016-04-01 10 views
-1

Ich versuche, den Modul-Code aus dem Modul Fremdschlüssel in meinem Formular und zeigen Sie die Beiträge, die dazu gehört mit HttpResponseRedirect, aber ich bekomme Fehler: 'str' Objekt hat kein Attribut 'code'. Wie kann ich das lösen?Kann nicht umleiten auf Seite mit URL-Parameter in Formular gefunden

Traceback:

response = self.process_exception_by_middleware(e, request) ... 
▶ Local vars 

response = wrapped_callback(request, *callback_args, **callback_kwargs) ... 

▼ Local vars 
Variable Value 
request <WSGIRequest: POST '/forum/'> 
self <django.core.handlers.wsgi.WSGIHandler object at 0x03A88970> 
wrapped_callback <function forum_modules at 0x038DF618> 
callback <function forum_modules at 0x038DF618> 
resolver_match ResolverMatch(func=forum.views.forum_modules, args=(), kwargs={}, url_name=forum_modules, app_names=[], namespaces=['forum']) 
resolver <RegexURLResolver 'mysite.urls' (None:None) ^/> 
callback_args () 
response None 
middleware_method <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x03AAAFD0>> 
callback_kwargs {} 
urlconf 'mysite.urls' 
response_is_rendered False 


code = module.code ... 
▼ Local vars 
Variable Value 
module 'CA' 
request <WSGIRequest: POST '/forum/'> 

I geändert, um die folgenden

module = request.POST.get('module') 
code = module.code 

zu: module_id = request.POST.get('module') wie es den Code des Moduls enthält. Aber ich bekomme jetzt diesen Fehler.

Reverse for 'forum_modules' with arguments '()' and keyword arguments '{'module_id': None}' not found. 0 pattern(s) tried: [] 
+0

bitte geben Fehler-Trace zurück –

+0

Sie haben den String 'module' aus' request.POST' geholt. Um von dieser Zeichenfolge zu einem 'Module'-Objekt zu gelangen, müssen Sie eine Suche durchführen, z. 'Module.objects.get (...)'. Wir können nicht sagen, was die Suche sein soll, weil Sie nicht gesagt haben, was der Wert von 'Modul' ist. Ist es der Primärschlüssel, Code oder etwas anderes? – Alasdair

+0

Modul ist ein Fremdschlüssel in der Post. Es hat einen Primärschlüssel als Code. Aber wenn ich das Modul in meiner Form benutze, bekomme ich ein Drop-Down der Liste der Modultitel. Ich brauche den Code umzuleiten. – Selena

Antwort

0

In beiden Fällen versuchen Sie, eine URL zu finden, die nicht vorhanden ist. Sie haben die forum_modules benannte URL, die keine Parameter hat, aber Sie versuchen, eine forum_modules genannte URL zu finden, die entweder module_id oder module als Parameter hat.

Für so etwas arbeiten Sie so etwas wie haben sollte:

url(r'^(?P<module>\d+)/$', views.forum_modules, name='forum_modules'), 

wenn Modul eine Reihe wäre. Der Unterschied ist das benannte Muster in der URL, das umgekehrt versucht, mit dem zu ersetzen, was auch immer Sie ihm geben. Wenn es kein passendes Muster findet, erhalten Sie diesen Fehler.

Alternativ, wenn Sie einen URL-Parameter wie http://example.com/?module=123 haben suchen, die Abfrageparameter Teil (?module=123) von reverse nicht behandelt wird, muss man anfügen, dass sich, so etwas wie:

import urllib 
reverse("forum_modules") + "?%s" % urllib.urlencode({"module": code})