Django的1.10傳遞從模型額外的選項來查看
我創建了一個wiki模式。 wiki文章將附加到不同的類型的對象。以下是我試圖將維基附加到Masterphoto對象的示例。稍後,維基將被附加到Person實例或其他東西。那麼,維基應該是可以附加到任何事情上的。
在Masterphoto中,方法get_create_wiki_url很高興地向url調度器發送額外的選項。
那麼,我失敗了。
如果我這樣做:URL(R '^維基/製作/ $',WikiCreate.as_view(),名稱= 'wiki_create'),然後我得到:
Reverse for 'wiki_create' with arguments '()' and keyword arguments '{'model': 'masterphoto', 'pk': 4}' not found. 1 pattern(s) tried: ['wiki/create/$']
這工作:網址(r'^ wiki/create/$',WikiCreate.as_view(),name ='wiki_create',kwargs = {'model':'masterphoto','pk':4}),
但是這太荒謬了。
你能在這裏給我一個踢嗎?換句話說,如何從Master照片傳輸額外的選項到wiki_create視圖?
維基/ models.py
class Wiki(models.Model):
related_model = models.CharField(max_length=100, blank=False, null=False, default="")
related_object_id = models.CharField(max_length=100, blank=False, null=False, default="")
article = models.TextField(blank=False, null=False, default="")
masterphoto/models.py
class Masterphoto(models.Model):
...
def get_create_wiki_url(self):
return reverse('wiki_create', kwargs = {'model': self._meta.app_label, 'pk': self.id})
urls.py
urlpatterns = [
url(r'^wiki/create/$', WikiCreate.as_view(), name='wiki_create', kwargs=None),
]
我不喜歡命名組在這種情況下。原因:網址看起來很糟糕。我只是不明白爲什麼我不能在這種情況下使用額外的選項。我是否正確理解您無法傳輸額外選項? – Michael
不使用'reverse',no。 'reverse'中的'args'映射到url模式的組中,'kwargs'映射到url模式中的命名組;沒有辦法通過'reverse'發送額外的選項。我想你必須使用例如會話變量,如果你不希望這些參數出現在你的網址。 – rafalmp