我正在做 CS50 專案 2,需要制作一個網頁,該網頁通過 url 獲取 id 并從資料庫中檢索有關該特定專案的所有資訊以顯示在網頁上。
def listing(request, id):
id = Listings.objects.get(id=2)
return render(request, "auctions/listing.html",{
"listings": Listings.objects.all()
})
這是我當前的代碼。我正在嘗試通過變數獲取 url 引數中的 id,并且我希望 Listings 變數僅獲取該專案的物件,但我不完全確定該怎么做。
如果您需要更多代碼,請告訴我。非常感謝您的幫助!
網址.py
from django.urls import path
from .models import User, Listings
from .forms import ListingsForm
from . import views
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("create", views.create, name="create"),
path("watchlist", views.watchlist, name="watchlist"),
path("categories", views.categories, name = "categories"),
path("listings/<int:id>/", views.listing, name = "listing"),
path("register", views.register, name="register")
]
清單.html
{% extends "auctions/layout.html" %}
{% block body %}
{{% for listing in listings %}
<img src ="{{ listing.image }}" style = "height: 10%; width: 10%;">
<h4 class = "text">{{ listing.title }}</h4>
<h6>Description: {{ listing.description }}</h6>
<h6>Category: {{ listing.category }}</h6>
<h6>Price: ${{ listing.bid }}</h6>
{% endfor %}
{% endblock %}
我知道一旦我弄清楚如何讓 id 只顯示該 id 的物件,我將不得不更改listing.html,但目前這是我的listing.html
uj5u.com熱心網友回復:
我在這里做了很多假設,所以很抱歉,但我認為找不到頁面錯誤和你原來的問題是相關的,我認為這一切都歸結為制作兩個不同的視圖、兩個不同的 url 路徑和兩個不同的模板. 一個視圖/路徑/模板用于所有串列(復數),另一個視圖/路徑/模板用于單個串列(單數)。
首先是您需要的網址:
path("listings/", views.listings, name = "listings"),
path("listing/<int:id>/", views.listing, name = "listing"),
您已經擁有的似乎屬于串列的視圖/路徑/模板,并進行了一些修改。串列的視圖將沒有 id,因為它將顯示所有串列(請注意,我將所有這些更改為串列而不是串列,因此我不會將其與處理單個串列的視圖混淆特定串列項:
def listings(request):
return render(request, "auctions/listings.html",{
"listings": Listings.objects.all()
})
該視圖可以與您的串列模板一起使用(請注意,我將名稱從串列.html 更改為串列.html ,因為串列.html 將處理特定串列,而串列.html 將列出所有串列)。還要注意<a href="{% url 'listing' listing.id %}">神奇的部分,其中將使用特定串列的 id 創建 url(請注意,視圖的名稱在 url 單詞之后,并且 id 沒有引號- 這將是添加的引數到生成的網址):
{% extends "auctions/layout.html" %}
{% block body %}
{{% for listing in listings %}
<img src ="{{ listing.image }}" style = "height: 10%; width: 10%;">
<h4 class = "text">{{ listing.title }}</h4>
<h6>Description: {{ listing.description }}</h6>
<h6>Category: {{ listing.category }}</h6>
<h6>Price: ${{ listing.bid }}</h6>
<a href="{% url 'listing' listing.id %}">link to this particular listing's page</a>
{% endfor %}
{% endblock %}
現在到特定串列的詳細資訊頁面,上面生成的鏈接將把用戶帶到那里。
def listing(request, id):
listing = Listings.objects.get(id=id)
return render(request, "auctions/listing.html",{
"listing": listing
})
接下來,您必須創建一個名為的模板listing.html,您可以在其中顯示特定串列的所有詳細資訊。
CS50 Web Programming 課程非常棒,也非常難。對我幫助很大的是閱讀筆記,停止視頻并撰寫他演示的代碼。所有的答案都在那里。只是一個建議;每個人的學習方式都不一樣。祝你好運!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/463589.html
標籤:django 网址 django模型 django-forms cs50
上一篇:如何將檢測到的文本中的url轉換為React中的鏈接?
下一篇:如何從R中的URL批量下載資料
