《Python编程从入门到实践 第二版》第十九章练习

19-1 博客 新建一个Django项目,将其命名为Blog。在这个项目中,创建一个名为blogs 的应用程序,并在其中创建一个名为BlogPost 的模型。这个模型应包含title 、text 和date_added 等字段。为这个项目创建一个超级用户,并使用管理网站创建几个简短的帖子。创建一个主页,在其中按时间顺序显示所有的帖子。

创建两个表单,其中一个用于发布新帖子,另一个用于编辑既有的帖子。尝试填写这些表单,确认它们能够正确工作。

1 创建虚拟环境

Windows:

 'cmd' # 在该目录中运行终端
 python -m venv ll_env # ll是两个小写字母l
2 激活虚拟环境
ll_env\Scripts\activate
3 安装Django
(ll_env) Blog>pip install django
4 创建项目
(ll_env) Blog>django-admin startproject Blog .
5 创建数据库
(ll_env) Blog>python manage.py migrate
6 创建应用程序
(ll_env) Blog>python manage.py startapp blogs
7 创建模型

models.py

from django.db import models

# Create your models here.

class BlogPost(models.Modes):
	""" 博客页面 """
	title = models.CharField(max_length=200)
	text = models.TextField()
	date_added = models.DateTimeField(auto_now_add=True)

	class Meta:
		verbase_name_plural = 'BlogPost' # 让他显示为BlogPost

	def __str__(self):
		""" 返回模型字符串表示 """
		return self.text
8 激活模型

settings.py

# Application definition

INSTALLED_APPS = [
    # 我的应用程序
    'blogs',

    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
python manage.py makemigrations blogs
python manage.py migrate
9 创建超级用户
(ll_env) D:\Blog>python manage.py createsuperuser

admin.py

from django.contrib import admin
from .models import BlogPost

admin.site.register(BlogPost)
10 表单

forms.py

from django import forms

from .models import BlogPost

class BlogPostForm(forms.ModelForm):
	class Meta:
		model = BlogPost
		fields = ['title','text']  # 获取模型里的两个字段
		widgets = {
   'text': forms.Textarea(attrs={
   'cols':80})}

class BlogForm(forms.ModelForm):
	class Meta:
		model = BlogPost
		fields = ['title','text']  
		labels = {
   'text':'','title':''}
		widgets = {
   'text': forms.Textarea(attrs={
   'cols':80})}	
11 视图

views.py

from django.shortcuts import render,redirect

from .models import BlogPost

from .forms import BlogPostForm,BlogForm

def index(request):
	""" 主页,显示所有 """
	blogposts = BlogPost.objects.order_by('-date_added')
	context = {
   'blogposts':blogposts}
	return render(request,'blogs/index.html',context)

def new_blog(request):
	""" 添加新博客 """
	if request.method != 'POST':
		form = BlogPostForm()
	else:
		form = BlogPostForm(data=request.POST)
		if form.is_valid():
			form.save()
			return redirect('blogs:index')
	context = {
   'form':form}
	return render(request,'blogs/new_blog.html',context)

def edit_blog(request,blog_id):
	""" 编辑博客 """
	blogpost = BlogPost.objects.get(id=blog_id)
	title = blogpost.title

	if request.method != 'POST':
		form = BlogPostForm(instance=blogpost)
	else
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值