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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

532閲覧

djangoで、login_required の後に、htmlのobject_listやformが正常に表示されません。

alizona

総合スコア126

Django

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/12/27 12:40

djangoでログインした後に object_list の投稿一覧と、投稿追加用のフォームを表示するプログラムを書いています。

どうすれば、login直後に 127.0.0.1:8000/で objet_listを表示できるのでしょうか?
アドバイスをいただけないでしょうか?
どうぞよろしくお願いいたします。

投稿追加フォームの一部のみが表示されます。
イメージ説明
イメージ説明

現在のコード

python

1#project/urls.py 2from django.contrib import admin 3from django.urls import path, include 4 5urlpatterns = [ 6 path("admin/", admin.site.urls), 7 path('',include('registration.urls')), 8]

python

1#app(registration)/urls.py 2from django.urls import path 3 4from . import views 5from registration.views import post_detail 6 7from django.urls import path, include 8from django.contrib.auth.decorators import login_required 9from django.views.generic import TemplateView 10index_view = TemplateView.as_view(template_name="registration/frontpage.html") 11 12urlpatterns=[ 13 path("", login_required(index_view), name="frontpage"), 14 # この1行でdjangoでデフォルトで用意している以下がすべて入ります。 15 # ・ログイン 16 # ・ログアウト 17 # ・パスワード変更 18 # ・パスワード再発行 19 path('', include("django.contrib.auth.urls")), 20 path("<int:pk>/", post_detail, name="post_detail"), 21 path('update/<pk>/', views.Update.as_view(), name="update"), 22 path('delete/<pk>/', views.Delete.as_view(), name="delete"), 23]

python

1#templates/registration/frontpage.html 2{% extends "registration/base.html" %} 3{% block content %} 4 5 <h2 class="subtitle">add post</h2> 6 <form action="." method="post"> 7 {% csrf_token%} 8 {{form.as_p}} 9 <div class="field"> 10 <div class="control"> 11 <button class="button is-danger">submit</button> 12 </div> 13 </div> 14 </form> 15 <br> 16 <hr> 17 18 {% for post in posts %} 19 <!------------------post placed-------------> 20 <div class="post block"> 21 <h2 class="subtitle">{{post.title}}</h2> 22 Due:&nbsp;&nbsp;{{post.due}} 23 <br> 24 {{post.fromwho}} 25 &nbsp;->&nbsp; 26 {{post.towho}} 27 <br> 28 <p>{{post.body}}</p> 29 <small>Assigned:&nbsp;&nbsp;{{post.posted_date}}</small> 30 <br> 31 <a href="{% url 'update' post.pk %}">edit task</a>&nbsp;&nbsp;&nbsp; 32 <a href="{% url 'delete' post.pk %}">delete task</a> 33 </div> 34 35 <!--------------comment placed----------------> 36 {% for comment in post.comments.all %} 37 <article class = "media"> 38 <div class="media_content"> 39 <div class="content"> 40 <p> 41 <strong> 42 &nbsp;&nbsp;&nbsp;&nbsp;{{comment.name}} 43 &nbsp;&nbsp;&nbsp;&nbsp;<small>{{comment.posted_date}}</small> 44 </strong> 45 <br/> 46 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{comment.body}} 47 </p> 48 </div> 49 </div> 50 </article> 51 <br> 52 53 {% empty %} 54 <div class="notification"> 55 <p>comment is not yet.</p> 56 </div> 57 <br> 58 {% endfor %} 59 60 &nbsp;&nbsp;&nbsp;&nbsp;<a href="{% url 'post_detail' post.pk %}">add comment</a> 61 <br> 62 <br> 63 <hr> 64 65 {% endfor %} 66{% endblock %}

python

1#views.py 2# Create your views here. 3from django.shortcuts import render,redirect 4from registration.forms import CommentForm, PostForm 5from .models import Post 6 7 8def frontpage(request): 9 posts = Post.objects.all() 10 11 if request.method=="POST": 12 form=PostForm(request.POST) 13 14 if form.is_valid(): 15 comment=form.save(commit=False) 16 comment.save() 17 return redirect("frontpage") 18 else: 19 form =PostForm() 20 return render(request, "registration/frontpage.html", {"posts":posts, "form":form}) 21 22 23 24# add comment のため。 25def post_detail(request, pk): 26 post = Post.objects.get(pk=pk) 27 28 if request.method=="POST": 29 form=CommentForm(request.POST) 30 31 if form.is_valid(): 32 comment=form.save(commit=False) 33 comment.post=post 34 comment.save() 35 return redirect("post_detail",pk=post.pk) 36 else: 37 form =CommentForm() 38 39 return render(request, "registration/post_detail.html",{"post":post, "form":form}) 40 41

127.0.0.1:8000/1/ としたところ、post_detail.htmlがコメント追加フォームと一緒に問題なく表示されています。
イメージ説明

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

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

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

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

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

yuma.inaura

2022/12/27 13:37

DBにpostsのデータは確かにあるんでしょうか?
alizona

2022/12/27 13:44

あります。 login_requiredを使わずに、path("",frontpage,name="frontpage"), このように app/urls.py を指定すると、問題なく表示されます。
guest

回答1

0

自己解決

 views.py のなかで、
from django.contrib.auth.decorators import login_required

@login_required
def frontpage(request):
のようにしたところできました。

app/urls.py
には
path('', include("django.contrib.auth.urls")), を入れました。
ありがとうございました。

投稿2022/12/28 02:29

alizona

総合スコア126

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問