Конкретное сообщение не отображается после нажатия на заголовок сообщения - PullRequest
0 голосов
/ 28 апреля 2019

ИСПРАВЛЕНО Я прошу прощения за столь очевидный вопрос и извиняюсь за то, что пост был таким грязным, я тратил 18 часов в день на этот проект и был просто сожжен, я поставлюисправление в приведенном ниже коде с пометкой «<== изменено» рядом с ним, требуется только для изменения views.py (на случай, если это кому-то понадобится). игнорировать все остальные измененияпоказать после нажатия на его заголовок, но сообщение не отображается, а в Юникоде (исходный html?) просто отображается пустой класс div из моего base.html ({block content}) не будет отображаться после перенаправления на страницу одного сообщения (просмотр имениэто view_post).Что мне нужно изменить? </p>

Я создаю персональную страницу блога, где люди могут видеть заголовок любого сообщения, и когда они нажимают на него, он переносит их на весь пост.Я попытался добавить поле slug в модель и использовать его в моей функции view_post (я переписывал это много раз). Попытался использовать? P в моем URL, который ссылается на представление.Пробовал DetailTemplateView.Я заставил его работать один раз, используя post_id в представлении, но я испортил этот код, так что теперь я снова потерян.Попытался изменить ссылки на переменные в HTML (он отображался на странице в виде пустых тегов и единственного слова в шаблоне.) Попробовал render_to_response, Попытался использовать pk в качестве аргумента для представления view_post.Я, кажется, попробовал все, и после трех дней я исчерпал исследования, я продолжаю получать те же ссылки с устаревшими материалами.

<!-- personal_blog/personal_base.html-->
{% extends 'personal_blog/personal_base.html' %}

{% block content %}
        {% for post in posts %}
        <h5>{{ post.date|date:"Y-m-d" }}<a href="{{ post.id }}">{{ post.author }}
                {{ post.title }}</a></h5>
        {% endfor %}
{% endblock %}
<!--personal_blog/post.html-->
{% extends "personal_blog/personal_base.html" %}

{% block content %}

    <h3>{{ post.title }}</h3>
    <h6>on {{ post.published_date }}</h6>
    <p>{{ post.text|linebreaks }}</p>

{% endblock %}
# personal_blog/models.py
from django.conf import settings
from django.db import models
from django.utils import timezone
from django.utils.http import urlquote
from django.utils.translation import ugettext_lazy as _
from django.core.mail import send_mail
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
from django.contrib.auth.models import BaseUserManager
from django.contrib.auth import get_user_model
from datetime import datetime
User = get_user_model()

class PersonalBlogPost(models.Model): 
    objects = models.Manager() # <==Could not call PersonalBlogPost.objects on anything unless I did this. 
    author = models.ForeignKey(User, related_name='personal_blog_poster', on_delete=models.CASCADE, null=True)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(auto_now=True, null=True)#, blank=True) 
    published_date = models.DateTimeField(auto_now=True, null=True)#blank=True)
    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title
# public_posts/views.py

from django.shortcuts import render
from django.utils import timezone
from .models import PersonalBlogPost
from django.urls import reverse_lazy
from django.views import generic
from django.http import HttpResponseRedirect, HttpResponseNotFound
from django.shortcuts import render, redirect
from . import forms
from django.forms import ModelForm as Form
from datetime import datetime

def personal_blog_post_list(request):

    posts = PersonalBlogPost.objects.filter(published_date__lte=datetime.now()).order_by('-published_date')
    return render(request, 'personal_blog/personal_blog.html', {'posts': posts})

def view_post(request):
    author = request.user <==added

   #posts = PersonalBlogPost.objects.get(pk=request.post_id) <==This was wrong

    posts = PersonalBlogPost.objects.filter(author_id=author) <==Changed to this

    return render(request, 'personal_blog/post.html', {'posts': posts})

def new_personal_post(request):
    if request.method == 'POST':
        form = forms.PersonalBlogPostForm(request.POST)
        if form.is_valid():
            personal_post = form.save(commit=False)
            personal_post.author = request.user
            personal_post.save()
            return redirect('blog_personal')
    else:
        form = forms.PersonalBlogPostForm()
    return render(request, 'personal_blog/new_post.html', {'form': form})
# personal_blog/urls.py

from django.conf.urls import url, include
from django.urls import path
from django.views.generic import ListView, DetailView, TemplateView
from .models import PersonalBlogPost
from . import views
urlpatterns = [
        path('', views.personal_blog_post_list, name='personal_blog'),
        url(r'^personal_blog/', views.new_personal_post, name='new_post'), 
        url(r'^(?P<author>\w)/$', ListView.as_view(model = PersonalBlogPost,
                template_name = 'personal_blog/personal_blog.html')),
        url(r'^',views.view_post, name='view_post'),
]

Ожидаемые результаты должны былинажмите на заголовок вашего сообщения и будете перенаправлены на страницу, чтобы иметь возможность прочитать весь пост.Фактические результаты были, вы успешно перенаправлены на http://127.0.0.1:8000/personal_blog/1/ (или другой идентификатор сообщения), но ничего не отображается РЕДАКТИРОВАТЬ Итак, я попытался опубликовать новую вещь на странице, и он выдал ошибку, потому что яошибочно назвал что-то, и теперь вместо того, чтобы перенести меня на пустую страницу, он говорит мне, что «объект WSGIRequest» не имеет атрибута «id» ». Вот строка, о которой он говорит: posts = PersonalBlogPost.objects.get(pk=request.id) в представлении view_post, это убивает меня, lol haaaaalp pleease,(Когда я узнаю больше, вы можете поспорить, что я буду на всех этих форумах пытаться помочь людям, потому что это ужасно, четыре дня исследований, которые ничего не показывают.) Редактировать 2 Я изменилсямой post_view для

def view_post(request):
    posts = PersonalBlogPost.objects
    return render(request, 'personal_blog/post.html', {'posts': posts})

Теперь он перенаправляет на страницу и показывает единственную работу, которая есть в моем шаблоне post.html, и показывает исходный HTML-код (пробелы так показывают теги, извините, я новичок здесь.)

< h3>< /h3>  
< h6>on < /h6>
< p>< /p>

Где должна быть информация о сообщении, я также изменил переменные в post.html на {{posts.variable}} (пробовал разные варианты posts.variable [post. Или posts.даже попытался использовать цикл for без удачи])

Это происходит в моем терминале, когда я нажимаю на сообщение, которое я хотел бы увидеть

[28/Apr/2019 11:22:07] "GET /personal_blog/8 HTTP/1.1" 301 0
[28/Apr/2019 11:22:07] "GET /personal_blog/8/ HTTP/1.1" 200 2106

Первый зеленый - последнийодин белый, должен ли он это делать?

...