ИСПРАВЛЕНО Я прошу прощения за столь очевидный вопрос и извиняюсь за то, что пост был таким грязным, я тратил 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
Первый зеленый - последнийодин белый, должен ли он это делать?