繁体   English   中英

如何在Django-Python中将值从views.py传递到已定义的模板

[英]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教程,此处已介绍了所有内容。 例如,请参阅本教程的第3部分 ,以获取有关如何将urls.py与views.py相关联的更多信息, 第4部分讨论了如何将变量传递给模板。

相信 ,只有在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM