【发布时间】:2019-11-29 21:42:15
【问题描述】:
我正在学习 Django。我从非常基础的 Django Girls 博客教程开始。现在我想用概念视频博客来转换它,用户可以上传像 Youtube 这样的视频,用户将能够在页面博客上播放该视频。此外,我希望每个帖子都由管理员主持。我是新手,任何专家都可以帮助我提出一些编码建议吗?我在下面包含了完整的代码。
#ALL MODELS
from django.conf import settings
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
###############################################################
# ALL VIEWS
from django.shortcuts import render, get_object_or_404, redirect
from .models import Post
from django.utils import timezone
from .forms import PostForm
def post_list(request):
posts = Post.objects.filter(
published_date__lte=timezone.now(
)).order_by('-published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
# post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
# post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form': form})
###################################################################
# URL patterns
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
path('post/new/', views.post_new, name='post_new'),
path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
]
#################################################################
# Forms
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('title', 'text',)
【问题讨论】:
-
您可能会发现这个问题已经结束,因为像这样关于意见问题的讨论可能会一直持续下去,而不会得出任何有用的结论。这不是个人的。您可能会发现this article 有助于提出问题。
-
@holdenweb 感谢您的建议。我试图提供代码但因缩进问题而失败。我无法解决这个问题,这就是我避免使用示例代码的原因。我现在可以添加它们吗?
-
最好发布一个新问题,并使用适当缩进的代码 sn-ps。
-
伙计们,现在我已经编辑了我的问题。我希望这能更好地反映我的问题。