質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

374閲覧

djangoで簡単なブログ投稿を作りたい

sankakuoooo

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2023/03/26 06:34

編集2023/03/26 09:18

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • ▲▲ブログ投稿の詳細ページをつくりたい

前提

pythonでかんたんなブログ投稿を作っています。

発生している問題・エラーメッセージ

Does not exist at post-1 matching query does not exist

該当のソースコード

django:models.py

1 2from django.db import models 3 4 5class Post(models.Model): 6 title = models.CharField(max_length=255) 7 slug = models.SlugField() 8 intro = models.TextField() 9 body = models.TextField() 10 posted_date = models.DateTimeField(auto_now_add=True) 11 12 13 def __str__(self): 14 return self.title

django:views.py

1from http.client import HTTPResponse 2from django.shortcuts import render 3from .models import Post 4 5def frontpage(request): 6 posts = Post.objects.all() 7 return render(request, "blog/frontpage.html" , {"posts": posts}) 8 9 10def post_detail(request, slug): 11 post = Post.objects.get(slug=slug) 12 return render(request, "blog/post_detail.html" , {"post": post}) 13

django:settings.py

1""" 2Django settings for first project. 3 4Generated by 'django-admin startproject' using Django 4.1.7. 5 6For more information on this file, see 7https://docs.djangoproject.com/en/4.1/topics/settings/ 8 9For the full list of settings and their values, see 10https://docs.djangoproject.com/en/4.1/ref/settings/ 11""" 12 13from pathlib import Path 14 15# Build paths inside the project like this: BASE_DIR / 'subdir'. 16BASE_DIR = Path(__file__).resolve().parent.parent 17 18 19# Quick-start development settings - unsuitable for production 20# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/ 21 22# SECURITY WARNING: keep the secret key used in production secret! 23SECRET_KEY = "django-insecure-w1ex4e%(ocf9h9jg3!g(zbs(!jed(m%_p$@6_1e=peh5yoi*2$" 24 25# SECURITY WARNING: don't run with debug turned on in production! 26DEBUG = True 27 28ALLOWED_HOSTS = ['*'] 29 30 31# Application definition 32 33INSTALLED_APPS = [ 34 "django.contrib.admin", 35 "django.contrib.auth", 36 "django.contrib.contenttypes", 37 "django.contrib.sessions", 38 "django.contrib.messages", 39 "django.contrib.staticfiles", 40 "blog" 41 42] 43 44MIDDLEWARE = [ 45 "django.middleware.security.SecurityMiddleware", 46 "django.contrib.sessions.middleware.SessionMiddleware", 47 "django.middleware.common.CommonMiddleware", 48 "django.middleware.csrf.CsrfViewMiddleware", 49 "django.contrib.auth.middleware.AuthenticationMiddleware", 50 "django.contrib.messages.middleware.MessageMiddleware", 51 "django.middleware.clickjacking.XFrameOptionsMiddleware", 52] 53 54ROOT_URLCONF = "first.urls" 55 56TEMPLATES = [ 57 { 58 "BACKEND": "django.template.backends.django.DjangoTemplates", 59 "DIRS": [], 60 "APP_DIRS": True, 61 "OPTIONS": { 62 "context_processors": [ 63 "django.template.context_processors.debug", 64 "django.template.context_processors.request", 65 "django.contrib.auth.context_processors.auth", 66 "django.contrib.messages.context_processors.messages", 67 ], 68 }, 69 }, 70] 71 72WSGI_APPLICATION = "first.wsgi.application" 73 74 75# Database 76# https://docs.djangoproject.com/en/4.1/ref/settings/#databases 77 78DATABASES = { 79 "default": { 80 "ENGINE": "django.db.backends.sqlite3", 81 "NAME": BASE_DIR / "db.sqlite3", 82 } 83} 84 85 86# Password validation 87# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators 88 89AUTH_PASSWORD_VALIDATORS = [ 90 { 91 "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", 92 }, 93 {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",}, 94 {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",}, 95 {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",}, 96] 97 98 99# Internationalization 100# https://docs.djangoproject.com/en/4.1/topics/i18n/ 101 102LANGUAGE_CODE = "ja" 103 104TIME_ZONE = "Asia/Tokyo" 105 106USE_I18N = True 107 108USE_TZ = True 109 110 111# Static files (CSS, JavaScript, Images) 112# https://docs.djangoproject.com/en/4.1/howto/static-files/ 113 114STATIC_URL = "static/" 115 116# Default primary key field type 117# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field 118 119DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" 120

urls.py

1"""first URL Configuration 2 3The `urlpatterns` list routes URLs to views. For more information please see: 4 https://docs.djangoproject.com/en/4.1/topics/http/urls/ 5Examples: 6Function views 7 1. Add an import: from my_app import views 8 2. Add a URL to urlpatterns: path('', views.home, name='home') 9Class-based views 10 1. Add an import: from other_app.views import Home 11 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12Including another URLconf 13 1. Import the include() function: from django.urls import include, path 14 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15""" 16from django.contrib import admin 17from django.urls import path 18 19from blog.views import frontpage, post_detail 20urlpatterns = [ 21 path('admin/', admin.site.urls), 22 path("", frontpage), 23 path("<slug:slug>/", post_detail, name="post_detail"), 24] 25 26 27 28 29 30 31

html:base.html

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Djangoブログ</title> 8 <link rel="stylesheet" 9 href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css"> 10</head> 11<body> 12 <nav class="navbar is-danger"> 13 <div class="navbar-brand"> 14 <a href="/" class="navbar-item"> 15 <strong>プログラミングチュートリアル</strong> 16 </a> 17 </div> 18 </nav> 19 20 <section class="section"> 21 <div class="container"> 22 {% block content %} {% endblock %} 23 </div> 24 </section> 25</body> 26</html>

html:post_detail.html

1{% extends "blog/base.html" %} {% block content %} 2 3 <h1 class="title"> {{post.title}} </h1> 4 <small>Posted at {{post.posted_date}}</small> 5 <p>{{post.intro}}</p> 6 <p>{{post.body}}</p> 7 <hr /> 8 9{%endblock%}

frontpage.html

1{% extends "blog/base.html" %} {% block content %} 2{% for post in posts %} 3<div class="post block"> 4 <h2 class="subtitle"> {{post.title}} </h2> 5 <small>Posted at {{post.posted_date}}</small> 6 <p>{{post.intro}}</p> 7 8</div> 9{% endfor %} {% endblock %}

試したこと

htmlのタイプミスの確認。
viewsでobjects.all()からget_object_or_404へ変更してpostの情報を取ろうとしましたがエラーは変わりませんでした。

補足情報(FW/ツールのバージョンなど)

参考動画
https://www.youtube.com/watch?v=O037g3NOoXY

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2023/03/26 06:42

質問は編集できます。 また質問タグは5つまでつけられます。 コードはマークダウンのcodeでご提示を。
sankakuoooo

2023/03/26 06:44

すみません。初めての質問でして 少し時間がかかるかもしれませんが編集します。 ご丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問