Python 什么';链接视图和在视图之间传递数据的最佳方式是什么?
我有一个基本的日记应用程序,它有两个视图:添加和编辑视图。当用户点击添加视图上的“添加”按钮时,数据将保存到数据库中,并显示简单消息。当用户点击“编辑”视图上的“更新”按钮时,数据将更新,并添加最后一个更新戳记 到目前为止,这些视图是独立运行的。默认情况下,“编辑”视图加载上次保存的条目,并允许对其进行更新 我想对其进行更新,以便在“添加”视图上成功添加新的日记条目后,它将转换到“编辑”视图,以允许用户在需要时进行编辑和更新。如何将视图链接在一起,并将相关数据传递给Edit View,以了解要获取哪个条目(数据库对象)进行编辑?此外,我希望能够独立地使用Edit视图来获取指定的日记条目,例如在GET上。所以编辑视图对任何调用它的人都是不可知的,它只知道加载哪个日记条目 添加和编辑视图的代码如下所示:Python 什么';链接视图和在视图之间传递数据的最佳方式是什么?,python,django,django-views,Python,Django,Django Views,我有一个基本的日记应用程序,它有两个视图:添加和编辑视图。当用户点击添加视图上的“添加”按钮时,数据将保存到数据库中,并显示简单消息。当用户点击“编辑”视图上的“更新”按钮时,数据将更新,并添加最后一个更新戳记 到目前为止,这些视图是独立运行的。默认情况下,“编辑”视图加载上次保存的条目,并允许对其进行更新 我想对其进行更新,以便在“添加”视图上成功添加新的日记条目后,它将转换到“编辑”视图,以允许用户在需要时进行编辑和更新。如何将视图链接在一起,并将相关数据传递给Edit View,以了解要获
def addEntry(request):
entryForm = None
if request.method == "POST":
entryForm = EntryForm(request.POST)
if entryForm.is_valid():
entryForm.save(commit = True)
request.method = "GET"
return entrySubmitted("Entry has been submitted")
else:
logger.info(entryForm.errors)
else:
# Set up view with new entry form
entryForm = EntryForm()
template = getEntryViewTemplate(entryForm)
return render(request, "DiaryEntry.html", template)
def editEntry(request):
# Get the latest entry from the database
entry = Entry.objects.last();
if request.method == 'GET':
entryForm = EntryForm(instance = entry)
else:
entryForm = EntryForm(request.POST, instance = entry)
if entryForm.is_valid():
entryForm.setLastUpdated(datetime.now())
entryForm.save(commit = True)
templateData = getEntryViewTemplate(entryForm)
return render(request, "EditEntry.html", templateData)
提前感谢,
Francis查看关于类基视图的django文档 您可以使用不同的方法创建一个类。 获取、发布(创建对象)、放置(更新对象) 你有很多有用的方法和属性。 例如,可以将类视图链接到特定的模型(条目)。 如何将视图链接在一起,并将相关数据传递给Edit View,以了解要获取哪个条目(数据库对象)进行编辑? 您需要传递ID对象以进行编辑。两种解决方案。在您的Post数据中。或者通过url中的参数。 然后用输入数据初始化表单 在URL django中,您可以将URL链接到类基视图
url(r'^entry/$', views.EntryView.as_view(), name='create_entry'),
url(r'^entry/(?P<pk>[-\w/]+)$', views.EntryView.as_view(), name='update_entry'),
url(r'^entry/$,views.EntryView.as_view(),name='create_entry'),
url(r'^entry/(?P[-\w/]+)$),views.EntryView.as_view(),name='update_entry'),
我希望这将帮助您当然,您只需要向编辑视图传递一个ID参数,并使用它来确定要编辑的对象?本教程向您展示了如何做到这一点。@DanielRoseman您指的是哪本教程?对不起,我是Django和Python的新手。谢谢。大多数时候,当有人提到链接视图时,他们完全忽略了这样一个事实,即您正在编写面向多个用户的内容。相反,您将重定向到与特定视图对应的url谢谢@Wilfried这个答案对我帮助很大。我选择将条目id传递到我的视图中,不客气。如果您的问题已经解决,请毫不犹豫地发布已编辑的代码并接受答案。