簡體   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