簡體   English   中英

在Django模板上下文中保存變量時出錯

[英]Error when saving variables in Django template context

我制作了一個網頁,該網頁向api提交請求,該api根據用戶以表格形式提供的參數返回有關Concert巡回演出的信息的JSON對象。 我能夠成功獲取JSON並進行解析。 數據的結構是一組Concert對象,其中包含有關場地,日期,位置等的信息。我正在解析每個對象並將其保存到列表中(正在運行)。 然后,我需要能夠在與視圖相對應的模板中將這些列表顯示為列表(格式類似於在Stubhub或Ticketmaster上的音樂會)。

為此,我認為我可以像對待文字字符串一樣,將每個列表作為變量存儲在模板的上下文字典中。 出於某種原因,當我嘗試執行此操作時,我得到了Exception Value: local variable 'form_artistSelect' referenced before assignment以下代碼Exception Value: local variable 'form_artistSelect' referenced before assignment

def search(request):
    form = SearchForm(request.POST or None)
    if form.is_valid():
        form_artistSelect = urllib2.quote(form.cleaned_data.get("artist_select"))
        form_city =   urllib2.quote(form.cleaned_data.get("city"))
        form_state = urllib2.quote(form.cleaned_data.get("state"))
        mile_radius = urllib2.quote(form.cleaned_data.get("radius"))
        #print "testing"
        url = "http://api.bandsintown.com/events/search?artists[]=" + form_artistSelect + "&location=" +form_city+","+ form_state+"&radius="+ mile_radius + "&format=json&app_id=YOUR_APP_ID"
        data = json.load(urllib2.urlopen(url))

        #titles = [ i.get("title") for i in data]
        raw_dts = [str(i.get("datetime")) for i in data]

        #formatted_dts = [i.get("formatted_datetime") for i in data]
        ticket_urls = [str(i.get("ticket_url")) for i in data]
        ticket_statuses = [str(i.get("ticket_status")) for i in data]
        venue_names = [str(i.get("venue").get("name")) for i in data]
        venue_cities = [str(i.get("venue").get("city")) for i in data]
        venue_region = [str(i.get("venue").get("region")) for i in data]
context = {
        "form_artistSelect" : form_artistSelect,
        "raw_dts" : raw_dts,
        "ticket_urls" : ticket_urls,
        "ticket_statuses" : ticket_statuses,
        "venue_names" : venue_names,
        "venue_cities" : venue_cities,
        "venue_region" : venue_region,
        "form" : form
    }
    return render(request,"searchform.html" , context)

為什么會導致這種方法出現問題? 如果這不是將解析的數據從響應傳遞到模板的正確方法,那我應該怎么做呢?

context = {在什么縮進級別?

如前所述,這是語法錯誤。 我可以想象它縮進到與if語句相同的級別。

form_artistSelect如果只分配form.is_valid()True如此,如果表單無效form_artistSelect你建立的時候是不確定的context字典。 這將導致您看到的異常。

您需要弄清楚為什么表單無效,或者將所有代碼移到if form.is_valid():塊中,並添加else來呈現並返回錯誤(或適合您的應用程序的任何錯誤)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM