【问题标题】:Use Django sessions in URL在 URL 中使用 Django 会话
【发布时间】:2014-08-09 11:59:40
【问题描述】:

我目前正在使用 Django 让用户通过表单输入信息,然后将数据保存为会话。然后我使用这个会话在其他视图中调用输入的数据。我想知道是否可以在我的 url 中使用这些会话中存储的输入数据?

def search(request):
    result = {}

    context = RequestContext(request) 

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

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


        if search.is_valid():
            ticker = search.cleaned_data['search']

            request.session["tick"] = ticker

        else:
            print search.errors
    else:
        search = Search()

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

这是我对应的urls.py:

url(r'^search/$', views.search, name='search'),

有什么方法可以使用在我的 url 中保存为 't = request.session.get("tick")' 的会话,以便我可以让 url 与用户输入的数据相对应?例如,如果用户输入“hello”,那么我的网址将显示 /search/hello。

谢谢。

【问题讨论】:

    标签: django session django-sessions


    【解决方案1】:

    是的,你可以这样做:

    urls.py

    url(r'^search/$', views.search, name='search'),
    url(r'^search/(?P<query>.+)/$', views.search, name='search'),
    

    views.py

    from django.http import HttpResponseRedirect
    from django.core.urlresolvers import reverse
    
    def search(request, query=None):
        result = {}
        context = RequestContext(request) 
    
        if request.method == 'POST':
            search = Search(data=request.POST)
            if search.is_valid():
                ticker = search.cleaned_data['search']
                return HttpResponseRedirect(reverse('search', kwargs={'query': ticker}))
            else:
                print search.errors
        else:
            search = Search()
    
        return render_to_response('ui/search.html', {"result":result}, context) 
    

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 1970-01-01
      • 2011-07-10
      • 2012-08-19
      • 2019-07-19
      • 2015-11-08
      • 2015-12-06
      • 2011-11-22
      相关资源
      最近更新 更多