[英]How to pass values to defined template from views.py in Django-python
我有一个这样的模型:
class EventTypeCategory(models.Model):
name = models.CharField(max_length=50, verbose_name="Name")
user = models.ForeignKey(User, verbose_name="User")
Message_slug = models.SlugField(blank=True, verbose_name="Message")
def __unicode__(self):
return self.name
在urls.py中:
url(r'^categ/$',
'eventcateg_detail', name='eventcateg_detail'),
在views.py中:
def eventcateg_detail(request,event_categ_id=None, event_categ_slug=None):
我想按模板级别在定义的值(即名称和Message_slug)之上添加/编辑/删除(CRUD)。 我没有任何提示如何将url.py与views.py相关联以及eventcateg_detail函数的定义是什么。此函数如何将值传递给模板(模板名称为categ.html)
我是Django的新手:)需要您的帮助
您需要允许URL接受参数,以允许您指定要查看的事件类别:
/categ/outdoor-events/
/categ/catered-events/
...
为此,您在url方案中使用命名URL模式 :
url(r'^categ/(?P<slug>[-\w]+)/$','eventcateg_detail', name='eventcateg_detail'),
并且在您看来:
from django.shortcuts import get_object_or_404, render
def eventcateg_detail(request,slug):
return render(request, "categ.html", {
'obj' : get_object_or_404(EventCateg, Message_slug =slug) # You should change Message_slug to just slug
})
并在您的模板中:
<h1>{{ obj.name }}</h1>
因此,当用户输入如上所述的URL时,它将与我们的URL模式匹配,并且url的子弹部分( catered-events
)将作为参数传递给我们的视图。
我
相信 ,只有在Django框架调用视图函数时,视图函数才会传递httprequest,该函数的其他两个参数仅在您自己调用该函数时才有用,
而在Web上则无用。
正如评论中指出的那样,我误认为我的信念,可以将其他参数作为动态url传递(即,像这样指定的url(r'^polls/(?P<poll_id>\\d+)/$', 'polls.views.detail')
请参阅此链接和@pastylegs的答案
如果您要这样做,那么Django Admin将允许您编辑所有模型字段。 设置说明可在Django文档中找到。
但是,我认为您要问的是如何通过Web对非管理员级别的用户启用CRUD编辑。 在这种情况下,您有很多选择。 这些选择之一是为Django使用类似于活塞的预构建框架。 另一种方法是使用通用视图
另一个选择是自己构建视图,从而在模型上启用操作。 在这种情况下,您可以使用所有Django。 您可以在HttpRequest的内参数传递给您的自定义功能,例如POST数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.