[英]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.