再次为这可能是一个简单的问题道歉!
好的,所以!
我的问题是我有一个 saveModel 函数,它保存一个模型。如果模型都很好(is_valid),它将保存模型并重定向到pageA
如果模型不好,或者请求是 GET,那么我想重定向到 pageB
一切都很好,但是我这样做了好几次,真烦人!我不想一直剪切和粘贴,所以我想出了这个:
class SaveModel(View):
def as_view(self):
if request.method == "POST":
form = SaveModel.getPostForm(self.request)
if form.is_valid():
processedForm = SaveModel.processForm(self.request)
processedForm.save()
if (self.success_template):
return render_to_response(self.success_template)
else:
return render_to_response('pageA.html')
else:
form = SaveModel.getForm()
if (self.context_object_name):
contextName = context_object_name
else:
contextName = 'form'
if (self.template_name):
return render_to_response(template_name,{contextName:form})
else :
return render_to_response('pageB.html',{contextName:form})
def getForm(self):
return None
def getPostForm(self,request):
return None
def processForm(self,form,request):
return None
然后,我定义了其他类来处理特定的模型,例如:
class StoryModelView(SaveModel):
def getForm(self,request):
return StoryForm()
def getPostForm(self,request):
return StoryForm(request.POST)
def processForm(self,form,request):
theStory = form.save(commit=False)
theStory.user = request.user
return theStory
然后,最后,在我的 urls.py 中,我将引用(如上)要使用的模型,如下所示:
url(r'^addStory/$',
StoryModelView.as_view(
context_object_name='form',
template_name='accounts/addStory.html',
success_template='accounts/addStorySuccess.html'
)
),
但这似乎不起作用 - pycharm 向我保证我对 self.context_object_name 等的引用是无效的。我是 python 和 django 的新手(这就是为什么我认为我会和他们一起建立一个网站!聪明的安德鲁!),所以我确信我错过了很多东西(抽象方法和东西。 .. python 会这样做,对吗?)
我需要做什么才能让这一切正常工作?这是我应该做的事情吗?