使用HTML在视图中发送的参数

时间:2013-02-21 05:08:02

标签: django django-templates django-views

我有一个带有以下数据的DB Emp:

id|name|project
1|tom|p01
2|tom|p02
3|tom|p03
4|mat|p04
5|mat|p05
6|katie|p06

我在html页面name.html中显示不同的Emp.name,如下所示:

<a href="emp/{{ Emp.name }}/project/">{{ Emp.name }}</a>

现在,当用户选择一个特定的Emp.name时,我想在新的html页面project.html中显示该名称的所有项目值。所以我需要编写如下视图:

def project(request, ***emp_name***):
    proj_list = Emp.objects.filter(name=***emp_name***)
    t = loader.get_template('name/project.html')
    c = Context({
        'proj_list': proj_list,
    })
    return HttpResponse(t.render(c))

name.html必须将emp_name返回到视图项目()才能查询数据库。如何传递emp_name以及如何在project()中使用它?

2 个答案:

答案 0 :(得分:0)

urls.py,您可以提取emp_name并将其传递给视图。您必须使用named-groups。有关详细信息,请参阅 https://docs.djangoproject.com/en/1.3/topics/http/urls/#named-groups

答案 1 :(得分:0)

首先,您需要一个将参数传递给视图的URL模式:

from django.conf.urls.defaults import url, patterns

urlpatterns = patterns('your_module.views',
    url(r'^emp/(?P<emp_name>\w+)/project/$', 'project', name='projects'),
)

然后你需要重构你的观点:

from django.shortcuts import render
from your_module.models import Emp

def project(request, emp_name):
    proj_list = Emp.objects.filter(name=emp_name)
    return render(request, 'name/project.html', {'proj_list': proj_list})