【问题标题】:Pass value in a Template to a View in Django将模板中的值传递给 Django 中的视图
【发布时间】:2023-04-06 01:38:01
【问题描述】:

也许这很容易,但我遇到了麻烦。

我需要将 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 并在视图中访问它
  • 是的,我想将 Course.name 的值传递给 explicit_course,这样我就可以执行 courseExplicit = Course.objects.get(name="Course.name") 并呈现正确的视图。例如,如果用户点击 ios course 路径将是: course/ios 如果另一个点击 django course url 将是 course/django

标签: django python-2.7 django-templates views django-urls


【解决方案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

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 2013-07-29
    • 2018-07-10
    • 2021-02-03
    • 2021-09-16
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多