使用render_to_response传递URL参数

时间:2012-10-24 17:16:35

标签: django django-forms

我将此代码用于views.py文件

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

问题是,当调用return时,我还必须从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)

1 个答案:

答案 0 :(得分: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参数(正如Mark Lavin注意到的那样,如果django.core.context_processors.request中存在TEMPLATE_CONTEXT_PROCESSORS,它将起作用):

{{ request.GET.id }}

但是真诚地,你应该让你的观点更加干净,其中有很多问题。