2017-07-28 70 views
1

我需要在使用Django和Python登錄後在URL查詢字符串中傳遞會話ID,但在我的情況下,我收到了一些錯誤。我在下面解釋我的代碼。無法在使用Django和Python的URL查詢字符串中傳遞值

def loginsave(request): 
    """This function helps to login the user """ 

    if request.method == 'POST': 
     password = request.POST.get('pass') 
     uname = request.POST.get('uname') 
     per = User.objects.all().filter(
      Q(password__icontains=password) & Q(uname__icontains=uname)).count() 
     if per > 0: 
      user = User.objects.filter(
       Q(password__icontains=password) & Q(uname__icontains=uname)) 
      for use in user: 
       uid = use.id 
       user_name = use.uname 
      request.session['id'] = uid 
      request.session['sess'] = dict(dt=str(datetime.now()), 
            value='session') 
      request.session['sess_id'] = 'abcd1234' 
      return render(request, 'bookingservice/home.html', 
           {'count': per, 'username': user_name}) 
     else: 
      return render(request, 'bookingservice/login.html', {}) 

這是我的登錄功能,我在這裏創建會話ID,我需要通過URL傳遞它。我的菜單列表如下。

<a href="{% url 'home' %}?token={{request.session["sess_id"]}}">Home</a> 
<a href="{% url 'booking' %}">Add Booking</a> 
<a href="{% url 'personal' %}">Add Personal Info</a> 

我這樣做,但在這裏我得到以下錯誤。

Exception Value:  
Could not parse the remainder: '["sess_id"]' from 'request.session["sess_id"]' 

在這裏,我需要登錄後,會話ID應該來每頁的URL。

回答

1

變化

{{request.session["sess_id"]}}

{{ request.session.sess_id }} 

通常的模板語言Django以這種方式工作。在這裏,在變量名點表示一個lookup.When模板系統遇到一個變量名點,它會嘗試以下查找,順序如下:

Dictionary lookup. Example: request.session["bar"] 
Attribute lookup. Example: request.session.bar 
List-index lookup. Example: request.session[bar] 

你可以找到更多的docs

+1

其工作。謝謝。 – satya

0

您在模板中的錯誤,它應該閱讀(介意引號):

<a href="{% url 'home' %}?token={{request.session['sess_id']}}">Home</a> 
<a href="{% url 'booking' %}">Add Booking</a> 
<a href="{% url 'personal' %}">Add Personal Info</a> 
相關問題