再说一遍,抱歉 这个问题可能很简单!
好吧,所以!
我的问题是我有一个保存模式函数, 它保存模型。 如果模型完全好( 是_ valid), 它会保存模型, 并重定向到页面A
如果模型不好, 或者请求是一Get, 那么我想重定向到页面B
但我做了好几次,真烦人! 我不想一直剪和粘糊,所以我想到了这个:
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.i中,我将提到(如上所述)使用类似模式的模型:
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 ( 所以我认为我应该和他们一起建立一个网站! 聪明的Andrew! ), 所以我确定我错过了一大堆事情( 抽象的方法和东西... python 这样做, 对不对? )
我要怎么做才能让这一切奏效?