我正在學習 Django,并且作為專案的一部分,我試圖從名為“page”(包含內容)的 view1 中參考一個主題,以傳遞到名為“editpage”的 view2(我可以在其中編輯相應的主題)。
我相信這樣做的一種方法是通過會話,但鑒于我只需要在用戶想要編輯視圖 1 時參考該主題一次 - 有沒有一種方法可以在沒有會話的情況下將主題從視圖 1 傳遞到視圖 2 并忘記該主題一次編輯完成了嗎?
從以下問題的最佳答案來看,我似乎可以通過重定向來做到這一點?但是我找不到一種方法來使用帶有 url 鏈接的重定向。 Django 在視圖之間傳遞資料
我嘗試的方法是讓 editpage url 包含 view1 中的主題,但我不知道如何在兩個視圖之間傳遞主題。
為 urls.py、views.py、page.html 和 editpage.html 中的 page 和 editpage 嘗試以下代碼:
網址.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"),
]
視圖.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()
})
頁面.html
{% extends "encyclopedia/layout.html" %}
{% block title %}
{{ topic }}
{% endblock %}
{% block body %}
<a href="{% url 'editpage' %}">Edit this page</a><br>
{{ content }}
{% endblock %}
編輯頁面.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 %}
在此先感謝并感謝任何幫助!
uj5u.com熱心網友回復:
您必須像這樣將引數添加到您的網址鏈接中...
<a href="{% url 'editpage' topic=topic %}">Edit this page</a><br>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/350757.html
