2016-04-11 9 views
0

ich Daten aus meiner Form erhalten müssen und ihnenlokale Variable 'Kontext' verwiesen vor der Zuweisung

def parsurl(request): 


    if request.method == 'POST': 
     form = DomainForm(request.POST) 
     context = { 'form': form, } 
     if form.is_valid(): 
      r = form.cleaned_data.get('url_text') 
      masall =parser_d(r) 
      for mas1 in masall: 
       try: 
        Events.objects.create(events_title=mas1[1], events_text = mas1[2],events_img = mas1[0], events_is_pars=1, events_seourl = "132") 
       except: 
        print ("lololo") 

    else: 
     form = DomainForm() 

    return render_to_response(request, 'form.html', context) 

Ausnahmewert zu behandeln:

local variable 'context' referenced before assignment 

Antwort

0

Sie haben context im if request.method == 'POST' Zweig definiert, aber nicht in der else Zweig. Daher erhalten Sie einen Fehler für GET Anfragen.

Sie können das Problem beheben, indem Sie die Linie außerhalb des if-Anweisung zu bewegen wie folgt:

if request.method == 'POST': 
     ... 
    else: 
     ... 
    context = {'form': form} 
+0

können Sie sein und mich begann die Antwort zur gleichen Zeit zu schreiben und Sie auf dem Laufenden zuerst. Jetzt scheinen die Antworten gleich zu sein. Also sollte ich meine Antwort löschen? – cjahangir

+0

Warum weiß ich Template-Loader postmortem Django hat versucht, diese Vorlagen in dieser Reihenfolge zu laden: Using engine: django.template.loaders.filesystem.Loader:/home/ziberon/econom/ecosite/templates/ (Die Quelle existiert nicht) django.template.loaders.app_directories.Loader: /home/ziberon/econom/ecenv/lib/python3.4/site-packages/django/contrib/admin/tempates/ (Quelle existiert nicht) –

+1

Der Fehler liegt daran, dass Sie 'render_to_response' falsch aufrufen. Es wäre besser, stattdessen 'render' zu verwenden: 'render_to_response (request, 'form.html', context)' – Alasdair

Verwandte Themen