Django:通过 url link 将变量从视图传递到视图
Django: Passing variable from view to view via url link
我正在学习 Django,并且作为项目的一部分,我正在尝试从名为“page”(包含内容)的 view1 中引用一个主题,并将其传递到名为“editpage”的 view2(我可以在其中编辑相应的主题) .
我相信一种方法是通过会话来做到这一点,但鉴于我只需要在用户想要编辑视图 1 时引用一次主题 - 有没有一种方法可以在没有会话的情况下将主题从视图 1 传递到视图 2并在编辑完成后忘记主题?
从下面问题的最佳答案来看,我似乎可以通过重定向来做到这一点?但是我找不到使用 url 链接重定向的方法。
Django Passing data between views
我尝试的方法是让编辑页面 url 包含视图 1 中的主题,但我不知道如何在两个视图之间传递主题。
尝试在 urls.py、views.py、page.html 和编辑page.html 中的页面和编辑页面编写以下代码:
urls.py
from django.urls import path
from . import views
urlpatterns = [
path("editpage/<str:topic>", views.editpage, name="editpage"),
path("<str:topic>", views.page, name="page"),
]
views.py
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from django import forms
from . import util
def page(request, topic):
if util.get_entry(f"{topic}"):
return render(request, "encyclopedia/page.html", {
"content": util.get_entry(f"{topic}"), "topic": f"{topic}"
})
else:
return render(request, "encyclopedia/notfound.html")
def editpage(request, topic):
if request.method == "POST":
title = request.POST.get("topic")
# need to pull the title from the previously linked page
else:
return render(request, "encyclopedia/editpage.html", {
"form": NewSubmissionForm()
})
page.html
{% extends "encyclopedia/layout.html" %}
{% block title %}
{{ topic }}
{% endblock %}
{% block body %}
<a href="{% url 'editpage' %}">Edit this page</a><br>
{{ content }}
{% endblock %}
编辑page.html
{% extends "encyclopedia/layout.html" %}
{% block title %}
Edit Page
{% endblock %}
{% block body %}
<h1>Edit page</h1>
<form action="{% url 'editpage' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="submit">
</form>
{% endblock %}
提前致谢并感谢您的帮助!
您必须像这样将参数添加到您的 url link...
<a href="{% url 'editpage' topic=topic %}">Edit this page</a><br>
我正在学习 Django,并且作为项目的一部分,我正在尝试从名为“page”(包含内容)的 view1 中引用一个主题,并将其传递到名为“editpage”的 view2(我可以在其中编辑相应的主题) .
我相信一种方法是通过会话来做到这一点,但鉴于我只需要在用户想要编辑视图 1 时引用一次主题 - 有没有一种方法可以在没有会话的情况下将主题从视图 1 传递到视图 2并在编辑完成后忘记主题?
从下面问题的最佳答案来看,我似乎可以通过重定向来做到这一点?但是我找不到使用 url 链接重定向的方法。 Django Passing data between views
我尝试的方法是让编辑页面 url 包含视图 1 中的主题,但我不知道如何在两个视图之间传递主题。
尝试在 urls.py、views.py、page.html 和编辑page.html 中的页面和编辑页面编写以下代码:
urls.py
from django.urls import path
from . import views
urlpatterns = [
path("editpage/<str:topic>", views.editpage, name="editpage"),
path("<str:topic>", views.page, name="page"),
]
views.py
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from django import forms
from . import util
def page(request, topic):
if util.get_entry(f"{topic}"):
return render(request, "encyclopedia/page.html", {
"content": util.get_entry(f"{topic}"), "topic": f"{topic}"
})
else:
return render(request, "encyclopedia/notfound.html")
def editpage(request, topic):
if request.method == "POST":
title = request.POST.get("topic")
# need to pull the title from the previously linked page
else:
return render(request, "encyclopedia/editpage.html", {
"form": NewSubmissionForm()
})
page.html
{% extends "encyclopedia/layout.html" %}
{% block title %}
{{ topic }}
{% endblock %}
{% block body %}
<a href="{% url 'editpage' %}">Edit this page</a><br>
{{ content }}
{% endblock %}
编辑page.html
{% extends "encyclopedia/layout.html" %}
{% block title %}
Edit Page
{% endblock %}
{% block body %}
<h1>Edit page</h1>
<form action="{% url 'editpage' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="submit">
</form>
{% endblock %}
提前致谢并感谢您的帮助!
您必须像这样将参数添加到您的 url link...
<a href="{% url 'editpage' topic=topic %}">Edit this page</a><br>