1

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

我需要将 template.html 中的值传递给 view.py 我已经在 google 和 django 文档中搜索过这个问题,但是唯一建立的解决方案是使用: URL (GET) is there another form?

我在 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 %}

因此,当用户按下: <'img class="center" src="{{ Course.image.url }}"/> 这将重定向到 {{ 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

谁能帮我?

非常感谢。

4

1 回答 1

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

于 2013-07-28T17:11:45.723 回答