#python #django
#python #django
Вопрос:
я продолжаю получать страницу с ошибкой (404), когда я запускаю свой сервер для django, когда я нажимаю ссылку на подробную информацию о публикации. Я думаю, что с моим кодом все в порядке, поэтому мне нужна помощь, чтобы определить, почему я получаю ошибку.
это мой views.py
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Post
from django.utils import timezone
# Create your views here.
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('created_date')
return render(request, 'blog2app/home_post_list.html', {'posts': posts})
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog2app/postdetail.html', {{'post': post}})
this is my blog2appurls.py
from django.urls import path
from . import views
urlpatterns = [
path(r'^$', views.post_list, name="homepage"),
path(r'^post/(?P<pk>d )/$', views.post_detail, name='post_detail'),
]
это мой blog2/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path(r'^admin/$', admin.site.urls),
path(r'^$', include('blog2app.urls')),
]
это мой home_post_list.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% for post in posts %}
<p><h4>Published: {{ post.published_date }}</h4></p>
<h1><strong><a href="{% url 'post_detail' pk=post.pk %}"> {{ post.title }} </a></strong></h1><br>
{% endfor %}
</body>
</html>
это мой detailpost.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if post.published_date %}
{{ post.published_date }}
{% endif %}
<h1>{{ post.title }}</h1>
<p>{{ post.body|linebreaksbr }}
</body>
</html>
this is the error page on chrome.
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/
Using the URLconf defined in blog2.urls, Django tried these URL patterns, in this order:
^admin/$
^$
The empty path didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page
сервер разработки не показывает ошибок.
blog2app — это имя моего приложения. blog2 — это мое имя проекта. я использую pycharm idle для разработки.
я буду очень рад, если кто-нибудь сможет предложить какое-либо обучающее видео, особенно для создания блогов с помощью django.
Комментарии:
1. не могли бы вы предоставить подробную информацию об ошибке….
2. ваше имя приложения blog2app? можете ли вы правильно открыть просмотр списка?
3. Удалите
$
frompath(r'^$', include('blog2app.urls'))
.$
означает конец строки, то есть URL заканчивается там иpost/<pk>/
является полосатым.
Ответ №1:
я изменил свой detailpost.html чтобы
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ posts.published_date }}
<h1>{{ posts.title }}</h1>
<p>{{ posts.body|linebreaksbr }}
</body>
</html>
я изменил свой views.py чтобы
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Post
from django.utils import timezone
# Create your views here.
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('created_date')
return render(request, 'blog2app/home_post_list.html', {'posts': posts})
def post_detail(request, pk=None ):
post = Post.objects.get(pk=pk)
context = {'posts': post}
return render(request, 'blog2app/postdetail.html', context)
я изменил свой home_post_list.html чтобы
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% for post in posts %}
<p><h4>Published: {{ post.published_date }}</h4></p>
<h1><strong><a href="{% url 'post_detail_pk' pk=post.pk %}"> {{ post.title }} </a></strong></h1><br>
{% endfor %}
</body>
</html>
и я перестал видеть ошибку.
Я пришел к выводу, что я использовал сообщение в
post = Post.objects.get(pk=pk)
для вызова моего первичного ключа вместо использования сообщений в
context = {'posts': post}
Учебник Макса Гудриджа по django действительно помог мне.