【问题标题】:Django sessions keeps returning 'NoneType' errorDjango 会话不断返回“NoneType”错误
【发布时间】:2014-06-06 02:12:06
【问题描述】:

我目前正在使用 Django 表单让用户输入信息,然后我使用 Django 会话在我的 views.py 文件中调用其他视图函数。目前我的表单在视图函数“搜索”中处理,并在后面的视图函数中使用会话调用。但是,当我在表单中输入数据并提交时,出现错误:

cannot concatenate 'str' and 'NoneType' objects

到目前为止,这是我的代码:

def search(request):
    t = request.session.get("tick")

    if request.method == 'POST':
        search = Search(data=request.POST)

        if search.is_valid():
            success = True
            ticker = search.cleaned_data['search']
            request.session["tick"] = ticker
        else:
            print search.errors
    else:
        search = Search()



def search_overview(request):
    result = {}

    context = RequestContext(request) 

    t = request.session.get("tick")

    sourceCode = urllib2.urlopen("http://finance.yahoo.com/q/ks?s="+t).read()

    pbr = sourceCode.split('Price/Book (mrq):</td><td class="yfnc_tabledata1">')[1].split('</td>')[0]
    result['pbr'] = pbr

    return render_to_response('ui/search.html', {"result":result}, context) 

任何人对我如何解决这个问题有任何想法,以便我可以使用会话来存储要在不同视图函数中使用的数据?谢谢。

【问题讨论】:

  • 很可能,您的问题是 t = request.session.get("tick") 正在返回 None
  • 是的,我试过了,print "t" 并返回了None。关于我可以做些什么来解决这个问题的任何想法?
  • 如果tick没有返回任何内容,那么当您调用“ticker = search.cleaned_data['search']”时,不得为ticker分配任何东西,所以我会说看看周围是否有任何东西出现.

标签: python django session django-sessions


【解决方案1】:

在您的 search_overview 函数中,t 被设置为 None。不能与字符串连接。

您可以尝试将此作为快速修复,但它不能解决tick 不在会话中的问题:

t = request.session.get('tick', '')

如果存在,则返回sessiontick 键的值,否则返回空字符串。可以连接到另一个字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    相关资源
    最近更新 更多