2012-10-24 45 views
2

我使用此代碼的views.py文件傳遞一個URL參數選擇render_to_response與

@login_required 
def login_edit_page(request): 
#bla bla 
return render_to_response('login_edit_page.html', variables) 

的問題是,當回叫,我也必須通過從URL的參數。例如,URL是/ edit?id = 1在這個例子中,我想傳遞這個id。我怎樣才能做到這一點?

這是完整的代碼

@login_required 
def login_edit_page(request): 
    if request.method == 'POST': 
     form = LoginEditForm(request.POST) 
     if form.is_valid(): 
      login1 = _login_edit(request, form, request.GET['id']) 
      return HttpResponseRedirect(
             '/user/%s/' % request.user.username 
             ) 
    id2 = request.GET['id'] 
    name='' 
    url='' 
    Login_username ='' 
    notes= '' 
    password='' 
    try: 
     login1 = login.objects.get(
            id = id2, 
            username=request.user 
           ) 
     name = login1.name 
     url = login1.loginUrl 
     Login_username = login1.login_username 
     notes = login1.notes 
     password = login1.password 
    except (login.DoesNotExist): 
     pass 
    form = LoginEditForm({ 
          'name': name, 
          'url': url, 
          'Login_username': Login_username, 
          'notes': notes, 
          'password': password 
         }) 
    variables = RequestContext(request, { 
             'form': form 
             }) 
    login1 = _login_edit(request, form, id2) 
    return render_to_response('login_edit_page.html', variables) 

回答

3

不能使用render_to_response你的方式。試試這個:

... 
id2 = request.GET.get('id', None) 
... 
ctx = { 
    'form': form, 
    'id': id2 
} 
return render_to_response('login_edit_page.html', ctx, 
          context_instance=RequestContext(request)) 

注意,我添加id2上下文字典,所以它是在模板到達的{{ id }}。另外,結帳如何從請求中檢索url參數。

另一種方法是直接從request訪問URL參數(如馬克·拉文注意到,它會在django.core.context_processors.request情況下,工作中存在TEMPLATE_CONTEXT_PROCESSORS):

{{ request.GET.id }} 

但是真誠的,你應該讓你的看法更乾淨,其中有很多問題。

+0

最後一種方法假定'TEMPLATE_CONTEXT_PROCESSORS'中啓用了'django.core.context_processors.request',但默認情況下不包含它。 –

+0

這是真的,謝謝你,馬克拉文,我會更新我的回答 –

+0

我試過你的解決方案,但仍然得到「異常值:」在中找不到「Key」id「http://pastebin.com/M23qRRdC – Dimitris

相關問題