繰り返しますが、おそらく簡単な質問で申し訳ありません。
わかりました!
私の問題は、モデルを保存する 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 の初心者です (だからこそ、私はそれらを使って Web サイトを構築すると思ったのです! 賢いアンドリュー!)、たくさんのこと (抽象メソッドなど. .. python はそれを行いますよね?)
これをすべて機能させるにはどうすればよいですか?これは私が物事を行うべき方法ですか?