无法将列表页面连接到详细信息页面

时间:2020-08-02 12:51:26

标签: python django

我一直在努力制作一个网站,人们可以在餐厅上发表评论。我完成了urls.py,views.py,models.py和html文件的创建。 我试图将列表页面与每个餐厅的详细页面联系起来。因此,我使用str:pk标记将列表页面与详细信息页面连接起来。 但是,它不起作用,但是我检查一次,却找不到错误发生的原因。

设置和其他设置已经完成。我只需要调整应用程序文件。

我的目标: 餐厅列表已创建。我希望用户能够通过单击“ {{list.outline}}

下面的按钮进入详细信息页面

models.py

from django.db import models
from  django.utils import timezone

stars = [
    (1,"☆"),
    (2,"☆☆"),
    (3,"☆☆☆"),
    (4,"☆☆☆☆"),
    (5,"☆☆☆☆☆")
]
# Create your models here.
class Tabelog(models.Model):
    store_name = models.CharField("店名",max_length = 124,primary_key=True)
    title = models.CharField("タイトル",max_length = 124,null=True,blank=True)
    evaluation = models.IntegerField("評価",choices = stars)
    comment = models.TextField("口コミ")
    create_date = models.DateField("口コミ投稿日",default=timezone.now)
    price = models.PositiveIntegerField("値段",help_text='円',default=0)

    def outline(self):
        return self.comment[:10]

    def __str__(self):
        return ("{},{},{}".format(self.store_name,self.evaluation,self.comment[:10]))

urls.py

from django.urls import path,include
from Tabelog import views
from Tabelog.views import ReviewList,ReviewDetail,ReviewForm,ReviewFix,ReviewDelete,ReviewContact,ReviewContactComplete

app_name = "Tabelog"

urlpatterns = [
    path("lp/", views.lp,name="lp"),
    path("list/", ReviewList.as_view(),name="list"),
    path("detail/<str:pk>/",ReviewDetail.as_view(),name="detail"),
    path("form/",ReviewForm.as_view(),name="form"),
    path("form/fix/<str:pk>/",ReviewFix.as_view(),name="form_fix"),
    path("form/delete/<str:pk>/",ReviewDelete.as_view(),name="delete"),
    path("contact/",ReviewContact.as_view(),name="contact"),
    path("contact/complete/",ReviewContactComplete.as_view(),name="ContactComplete")
]

forms.py

from django.shortcuts import render,redirect,get_object_or_404
from Tabelog.models import Tabelog
from Tabelog.forms import CreateTabelogForm
from django.views import generic
from Tabelog.forms import CreateTabelogForm,ContactForm
from django.urls import reverse_lazy
from django.core.mail import send_mail
from django.template.loader import render_to_string

# Create your views here.
def lp(request):
    return render(request,"Tabelog/lp.html")

class ReviewList(generic.ListView):
    model = Tabelog

class ReviewDetail(generic.DetailView):
    model = Tabelog

class ReviewForm(generic.CreateView):
    model = Tabelog
    form_class = CreateTabelogForm
    success_url = reverse_lazy("Tabelog:list")

class ReviewFix(generic.UpdateView):
    model = Tabelog
    fields = "__all__"
    success_url = reverse_lazy("Tabelog:list")

class ReviewDelete(generic.DeleteView):
    model = Tabelog
    success_url = reverse_lazy("Tabelog:list")

class ReviewContact(generic.FormView):
    template_name = "Tabelog/tabelog_contact.html"
    form_class = ContactForm
    success_url = reverse_lazy("Tabelog:ContactComplete")

    def form_valid(self,form):
        subject = "お問い合わせがありました"
        message = render_to_string('Tabelog/mail.txt',form.cleaned_data,self.request)
        from_email = "toiawase@gmail.com"
        recipient_list = ["yutotennisnowboard@gmail.com"]
        send_mail(subject,message,from_email,recipient_list)
        return redirect('Tabelog:list')

class ReviewContactComplete(generic.TemplateView):
    template_name = "Tabelog/tabelog_contact_complete.html"

tabelog_list.html

<!DOCTYPE html>
{% extends 'diary/base.html' %}
{% block title %}お店リスト{% endblock %}

{% block content %}
{% for list in object_list %}
<div class="card border-primary mb-3">
  <div class="card-body text-primary">
    <h1 class="card-title">{{list.store_name}}</h1>
      <h2 class="card-text">{{ list.get_evaluation_display}}</h2>
      <span class="card-text">{{ list.outline}}</span><br>
      <button type="button" class="btn btn-light"> <a href="{% url 'Tabelog:detail' list.pk %}">See More Detail!</a> </button>
  </div>
</div>
{% endfor %}
{% endblock %}

tabelog_detail.html

<!DOCTYPE html>
{% extends 'diary/base.html' %}
{% load static %}
{% block title %}Detail Page{% endblock %}

{% block design %}
<link rel="stylesheet" href="{% static 'css/detail.css' %}">
{% endblock %}


{% block content %}
<div class="container">
  <div class="card border-info mb-3">
    <div class="card-body">
      <h1 class="card-title">{{object.title}}</h1>
      <p class="card-text">投稿者:{{ object.writer }}</p>
      <p class="card-text">作成日:{{ object.created_at}}</p>
      <p class="card-text">更新日:{{ object.last_modefied}}</p>
      <p class="card-text">カテゴリ:{{ object.category}}</p>
      <p class="card-text">タグ:{% for tag in object.tag.all %}{{tag}},{% endfor %}</p>
      <div class="card-text">
        {{object.text| linebreaks | urlize }}
      </div><br>
      <button type="button" class="btn btn-light"> <a href="{% url 'blog:update' object.pk %}">Change the post</a> </button>
    </div>
  </div>
</div>

<div class="container">
  <button type="button" class="btn btn-light"> <a href="{% url 'blog:comment' object.pk %}">コメントする</a></button>
</div>



<div class="container">
  <article class="card border-info mb-3" id="comment">
    <div class="card-body">
      {% for comment in article.comment_set.all %}
      <p class="card-text">{{comment | linebreaks | urlize}}</p>
      {% endfor %}
    </div>
  </article>
</div>

{% endblock %}

1 个答案:

答案 0 :(得分:0)

该问题是由从列表页面连接的详细信息页面引起的。我意识到错误消息不一定显示具体原因。