[英]How to run python script in a django class-based view?
我的Django應用程序models.py
具有以下類:
class Project(models.Model):
name = models.CharField(max_length=100)
...
我正在使用基於類的視圖,因此我的views.py
文件具有以下類:
from django.views import generic
from django.views.generic.edit import CreateView
class ProjectCreate(CreateView):
model = Project
fields = ['name']
HTTP形式可以完美運行並在數據庫中創建一個新元素,但是在創建Project
類的新實例時,我需要從外部python文件調用函數,我要運行的代碼是:
import script
script.foo(self.object.name)
我正在嘗試在ProjectCreate
類中運行函數foo
,但我一無所知,我嘗試使用get
和dispatch
方法,但是它不起作用,我已經閱讀了CreateView的文檔,但找不到答案。
我應該使用基於函數的視圖嗎? 還是有基於類的視圖的解決方案?
非常感謝你。
您可能希望在模型保存方法內而不是在視圖中執行此操作,因此每當創建新實例時都將調用該方法:
class Project(models.Model):
...
def save(self, *args, **kwargs):
if not self.pk:
script.foo(self)
return super(Project, self).save(*args, **kwargs)
如果您確定只希望從該一個視圖執行此操作,則可以改寫該視圖的form_valid
方法:
class ProjectCreate(CreateView):
def form_valid(self, form):
response = super(ProjectCreate, self).form_valid(form)
script.foo(self.object)
return response
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.