将模板中的值传递给 Django 中的视图
Posted
技术标签:
【中文标题】将模板中的值传递给 Django 中的视图【英文标题】:Pass value in a Template to a View in Django 【发布时间】:2013-07-28 10:49:50 【问题描述】:也许这很容易,但我遇到了麻烦。
我需要将 template.html 中的一个值传递给 view.py 我已经在 google 和 django docs 中搜索过这个问题,但唯一的解决方案是使用:URL (GET) 还有另一种形式吗?
我在 course_main.html 中有这个:
% for Course in Course %
<div id='courseContainer'>
<h4 class="center"> Course.name </h4>
<a href="course/ Course.name "><img class="center" src=" Course.image.url "/></a>
<p class="center"> Course.date </p>
<p> Course.description </p>
<!--End courseContainer -->
</div>
% endfor %
所以当用户按下: 这将重定向到 Course.name
中的变量这是由 urls.py 中的explicit_course 处理的:
urlpatterns = patterns('',
#Courses
(r'^course/[a-z].*$',explicit_course),
)
这里是explicit_course views.py:
def explicit_course(request):
profesor = Professor.objects.get(id=1)
courseExplicit = Course.objects.get(name="django-python")
variables = RequestContext(request,
'CourseExplicit':courseExplicit,
'Profesor':profesor
)
return render_to_response('course_explicit.html',variables)
在这里我想做这样的事情:
courseExplicit = Course.objects.get(name="Course.name")
但我不知道如何将 Course_main.html 中的 Course 值传递给 views.py 中的 explicit_course
谁能帮帮我?
非常感谢。
【问题讨论】:
那么,如果我理解正确的话,您要做的就是在 URL 中传递课程名称的值,然后您希望查找并在模板中显示结果? 首先,% for Course in Course %
不起作用。接下来,您已经可以访问视图中的查询集对象。您需要通过 URL 传递 id
并在视图中访问它
复制于:***.com/questions/17635255/django-urls-py-regex/…
是的,我想将 Course.name 的值传递给 explicit_course,这样我就可以执行 courseExplicit = Course.objects.get(name="Course.name") 并呈现正确的视图。例如,如果用户点击 ios course 路径将是: course/ios 如果另一个点击 django course url 将是 course/django
【参考方案1】:
您需要更改您的 urls.py
以使用命名的正则表达式:
urlpatterns = patterns('',
#Courses
(r'^course/(?P<course_name>[a-z]+)$',explicit_course),
)
然后将您的explicit_course
视图更改为:
def explicit_course(request, course_name):
profesor = Professor.objects.get(id=1)
courseExplicit = Course.objects.get(name=course_name)
# etc...
urls.py
中的命名正则表达式匹配项会将其内容作为变量传递给视图(在 request
之后),然后您可以照常使用。
您并没有真正“将值从模板传递到视图”,您只是从 URL 中提取数据。
文档可以在这里找到,值得一读:https://docs.djangoproject.com/en/1.5/topics/http/urls/#named-groups
【讨论】:
以上是关于将模板中的值传递给 Django 中的视图的主要内容,如果未能解决你的问题,请参考以下文章