将模板中的值传递给 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 中的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将 javascript 函数的值传递给 Django 视图?

如何在 django 的基于类的视图中将值传递给模板?

将视图中的 Django 查询集传递给模板

Django同时将视图中的var传递给两个模板

如何将数据值从视图传递到 Django 中的模板?

将 request.user 传递给 Django 中的模板