2

我将此代码用于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)
4

1 回答 1

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 参数。

另一种方法是直接从 url 参数request(正如 Mark Lavin 注意到的,它会在django.core.context_processors.request存在的情况下工作TEMPLATE_CONTEXT_PROCESSORS):

{{ request.GET.id }}

但是说实话,你应该让你的视图更干净,它有很多问题。

于 2012-10-24T17:26:13.750 回答