我正在嘗試創建使用 {{ project.title }} 值生成路徑的“專案”頁面,而不是我使用整數的當前方法。我不太明白我怎么能做到這一點,但覺得我很接近?
模型.py
from django.db import models
# Create your models here.
class Project(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
technology = models.CharField(max_length=20)
image = models.FilePathField(path='projects/static/img/')
live = models.URLField()
source = models.URLField()
def __str__(self):
return self.title
網址.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.project_index, name="projects"),
path("<int:pk>/", views.project_details, name="project_details"), # PK for Primary Key
]
視圖.py
from django.shortcuts import render
from .models import Project
# Create your views here.
def project_index(request):
projects = Project.objects.all()
context = {'projects': projects}
return render(request, 'projects/project_index.html', context)
def project_details(request, pk):
project = Project.objects.get(pk=pk)
context = {'project': project}
return render(request, 'projects/project_details.html', context)
我認為path("<int:pk>/",需要成為一個蛞蝓,但我無法弄清楚如何系結資料庫資料。可能context = {'project': project}嗎?
目前網址是http://127.0.0.1:8000/projects/1/ - 我正在尋找http://127.0.0.1:8000/projects/EXAMPLE/
謝謝
uj5u.com熱心網友回復:
網址.py
path("<title>/", views.project_details, name="project_details"),
視圖.py
from django.shortcuts import get_object_or_404
def project_details(request, title: str):
project = get_object_or_404(Project, title=title)
uj5u.com熱心網友回復:
您必須SlugField在models.py檔案中添加一個:
模型.py
from django.db import models
from django.utils.text import slugify
# Create your models here.
class Project(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
technology = models.CharField(max_length=20)
image = models.FilePathField(path='projects/static/img/')
live = models.URLField()
source = models.URLField()
slug = models.SlugField(default="", blank=True, null=False, db_index=True)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super().save(*args, **kwargs)
視圖.py
from django.shortcuts import render
from .models import Project
# Create your views here.
def project_index(request):
projects = Project.objects.all()
context = {'projects': projects}
return render(request, 'projects/project_index.html', context)
def project_details(request, slug):
project = Project.objects.get(slug=slug)
context = {'project': project}
return render(request, 'projects/project_details.html', context)
網址.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.project_index, name="projects"),
path("<slug:slug>/", views.project_details, name="project_details"),
]
確保運行makemigrations然后migrate。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323869.html
標籤:Python 姜戈 django-views django-模板
上一篇:將字典中的詞值分配給資料框內容
