Django

2014-04-16 5 views
5

में HttpResponseRedirect का उपयोग करके तर्क पारित करें मैं views से अपने इंडेक्स पेज (index.html) पर कुछ जानकारी पास करने का प्रयास कर रहा हूं। एक पास गया, मुझे इसे इंडेक्स पेज में एक्सेस करना होगा। मैंने इसे गुगल करने की कोशिश की है, लेकिन यह मुझे स्पष्ट नहीं था। किसी भी सहायता की सराहना की जाएगी। मैंने जो कोशिश की है उससे नीचे जुड़ा हुआ है।Django

नीचे मैं इंडेक्स पेज में "बार" मान को एक्सेस करना चाहता हूं। मैं उसे कैसे कर सकता हूँ ?

def tempLogin(request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
     if user.is_active: 
      login(request, user) 
      return HttpResponseRedirect(reverse('index',foo='bar')) 
     else: 
      return HttpResponseRedirect(reverse('index')) 
    else: 
     return HttpResponseRedirect(reverse('index')) 

उत्तर

4

आप HttpResponse या HttpResponseRedirect का उपयोग कर ऐसा नहीं कर सकते। आपको render या render_to_response का उपयोग करना होगा। कुछ हद तक नीचे की तरह:

from django.shortcuts import render 

def templogin(request): 
    # Do all your processings here ... 
    return render(request, 'index.html', {'bar': bar}) 

पहला तर्क render के लिए पारित हमेशा request है। दूसरा तर्क टेम्पलेट का नाम है। आपके मामले में, यह index.html है। और तीसरा तर्क एक शब्दकोश i.e टेम्पलेट संदर्भ में जोड़ने के लिए चर है। आपके मामले में यह bar है।

render पर Django docs पर और अधिक है।

और फिर अपने खाके में, आप bar चर कुछ हद तक नीचे के रूप में उपयोग कर सकते हैं:

<h1> {{ bar }} </h1> 

या

<span> Hello, {{ bar }}! </span> 

Django स्वचालित रूप से {{ bar }} का स्थान ले लेगा साथ यह मूल्य है।

11

मुझे यह प्रश्न काफी दिखाई देता है, और यह HttpResponseRedirect क्या करता है इसकी समझ की कमी को समझता है। यह सब कुछ ब्राउज़र को जाने और एक और यूआरएल लाने के लिए बताता है: इसलिए केवल उन्हीं पैरामीटर जिन्हें आप पास कर सकते हैं वे हैं जो अन्य यूआरएल पैटर्न से अपेक्षित होंगे। यदि आपके इंडेक्स यूआरएल के पास नाम मूल्य डालने के लिए एक वैकल्पिक स्थान है, तो आप इसे पास कर सकते हैं। अन्यथा, आपको इसे किसी अन्य तरीके से करने की आवश्यकता होगी: शायद सत्र में।