Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么';链接视图和在视图之间传递数据的最佳方式是什么?_Python_Django_Django Views - Fatal编程技术网

Python 什么';链接视图和在视图之间传递数据的最佳方式是什么?

Python 什么';链接视图和在视图之间传递数据的最佳方式是什么?,python,django,django-views,Python,Django,Django Views,我有一个基本的日记应用程序,它有两个视图:添加和编辑视图。当用户点击添加视图上的“添加”按钮时,数据将保存到数据库中,并显示简单消息。当用户点击“编辑”视图上的“更新”按钮时,数据将更新,并添加最后一个更新戳记 到目前为止,这些视图是独立运行的。默认情况下,“编辑”视图加载上次保存的条目,并允许对其进行更新 我想对其进行更新,以便在“添加”视图上成功添加新的日记条目后,它将转换到“编辑”视图,以允许用户在需要时进行编辑和更新。如何将视图链接在一起,并将相关数据传递给Edit View,以了解要获

我有一个基本的日记应用程序,它有两个视图:添加和编辑视图。当用户点击添加视图上的“添加”按钮时,数据将保存到数据库中,并显示简单消息。当用户点击“编辑”视图上的“更新”按钮时,数据将更新,并添加最后一个更新戳记

到目前为止,这些视图是独立运行的。默认情况下,“编辑”视图加载上次保存的条目,并允许对其进行更新

我想对其进行更新,以便在“添加”视图上成功添加新的日记条目后,它将转换到“编辑”视图,以允许用户在需要时进行编辑和更新。如何将视图链接在一起,并将相关数据传递给Edit View,以了解要获取哪个条目(数据库对象)进行编辑?此外,我希望能够独立地使用Edit视图来获取指定的日记条目,例如在GET上。所以编辑视图对任何调用它的人都是不可知的,它只知道加载哪个日记条目

添加和编辑视图的代码如下所示:

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传递到我的视图中,不客气。如果您的问题已经解决,请毫不犹豫地发布已编辑的代码并接受答案。