赞
踩
大家好,本文将围绕python项目开发案例集锦源码展开说明,python项目开发案例集锦 pdf是一个很多人都想弄明白的事情,想搞清楚python django web 开源项目需要先了解以下几个事情。
- 这里用的是python3.7和Django2.0.假设全都安装成功= =
- 然后这个是我做个人网站的一个过程=。=
- 然后这个也不能算是个教程吧=python的基本知识点总结。=
- 然后这只是粗糙的记录=。=
- 最后,防脱发用霸王=3=
创建Django项目
django-admin.py startproject MySite
此时,你会看到这样的文件夹:
运行一下你的项目,看看有没有成功:
./manage.py runserver
终端会显示这些:
有红字也不要担心,因为还没有设置呢!
接下来去http://127.0.0.1:8000/
看一看:
成功了!
ps:如果想要外部机器(同一网络)访问本机的Django服务的话,要写成./manage.py runserver 0.0.0.0:9999
,并将setting.py
中的ALLOWED_HOSTS
改为ALLOWED_HOSTS = ['*', ]
,一定要加逗号!
改一些配置
ps:这里的顺序可能不对。= =
更改/MySite/MySite/settings.py
中的内容
Django默认的DATABASES
是sqlite
,是这样的:
这里我是用的是MySQL
数据库,因此,我要改成这样:
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'MySite',
- 'USER': 'xxx',
- 'PASSWORD': 'xxxxx',
- 'HOST': '127.0.0.1',
- 'PORT': '3306'
- }
- }
这里一定要确保数据库已经存在了。在这之前,需要创建数据库,像这样滴:
create database MySite CHARACTER SET utf8 COLLATE utf8_general_ci;
还要更改时区和语言
向/MySite/MySite/__init__.py
中添加内容
- import pymysql
- pymysql.install_as_MySQLdb()
数据库迁移
首先,执行
./manage.py makemigrations
然后,执行
./manage.py migrate
这样就成功啦~
创建超级用户
创建超级用户是用来登陆到admin后台管理中的
执行
./manage.py createsuperuser
然后按照提示填写就好啦~
ps:一定要先进行数据库迁移,再创建用户。否则,会出现
进入admin看看
在浏览器中输入http://127.0.0.1:8000/admin
,会出现登录页面,此时会发现全都变成中文了,说明之前的设置生效了。
接下来,就可以用刚刚创建的用户登陆了,查看后台数据了!
创建app
执行./manage.py startapp Post
,查看项目结构,如下:
完成上步操作后,需要在/MySite/MySite/settings.py
中将app添加进去:
接下来,需要在app文件夹下添加urls.py
,用于路由映射:
在urls.py
中这样写:
- app_name = 'Post' # 这里是为了url反向解析用
-
- urlpatterns = [
- # 这里放映射的view
- ]
同时,在/MySite/MySite/urls.py
中需要添加对Post.urls
的映射:
- from django.contrib import admin
- from django.urls import path, include
-
- urlpatterns = [
- path('admin/', admin.site.urls),
- path(r'', include('Post.urls')),
- ]
创建模型
在app下的models.py
创建自己的模型就可以啦~
- from django.db import models
-
- class Category(models.Model):
- """分类"""
- name = models.CharField(max_length=100)
-
-
- class Tag(models.Model):
- """标签"""
- name = models.CharField(max_length=100)
-
-
- class Post(models.Model):
- """文章"""
- title = models.CharField(max_length=100)
- body = models.TextField()
- created_time = models.DateTimeField()
- modified_time = models.DateTimeField()
- excerpt = models.CharField(max_length=200, blank=True) # 文章摘要,可为空
- category = models.ForeignKey(Category, on_delete=True) # ForeignKey表示1对多(多个post对应1个category)
- tags = models.ManyToManyField(Tag, blank=True)
- views = models.PositiveIntegerField(default=0) # 阅读量
然后一定不要忘记再进行数据库迁移啊!!
前端模版
这里的前端模板使用的是模板之家的
链接��:http://www.cssmoban.com/tags.asp?n=html5
首先创建templates目录,结构如下:
此时,需要在setting.py
中添加关于模板的配置:
接下来是static目录,结构如下:
显而易见,这里放的是一些css、js文件等
index视图
首先,在Post/views.py
中实现index
方法:
- def index(request):
- """
- 主页
- :param request:
- :return:
- """
- return render(request=request, template_name='Post/index.html')
request
为请求对象;template_name
为渲染的前端页面的路径字符串(相对templates目录)
然后,在Post/urls.py
中进行路由映射:
- urlpatterns = [
- url(r'^$', views.index, name="index"),
- ]
注意:如果你主页的url是空,正则必须写成^$
最后,一定要要修改静态页面中引用的路径。
对于Django来说,可以使用static
标签。
在页面开头引入{% load static %}
,这个对应的配置信息是
并将页面中的路径改为
ps:对于css或者js中的引用也不要忘了改!
运行一下。
搞定!
向前端渲染及分页
首先,更改index()
- from django.shortcuts import render
- from django.core.paginator import Paginator
- from .models import Post
-
-
- def index(request):
- """
- 主页
- :param request:
- :return:
- """
-
- post = Post.objects.all()
-
- limit = 3
- paginator = Paginator(post, limit)
- page = request.GET.get('page', 1)
-
- result = paginator.page(page)
- context = {
- "post_list": result,
- "page": page
- }
- return render(request=request, template_name='Post/index.html', context=context)
然后修改index.html
运行看一下
搞定!
更改index.html中的所有跳转链接
在这里,我用的是url的反向解析。这样可以减轻后期维护成本。因此,就需要在urls.py中添加如下信息:
在html中修改成如下:
博客文章页面
别忘了改跳转链接!!!!
文章详情页和主页大体结构是相似的,因此,这里使用了模版继承。
在基类模版里,使用这个,将子类模版需要填充的位置占位
然后在子类模板中,使用相同的标签将填充的内容进行包裹
最后,不要忘了在子类模板中再写上{% extends 'Post/base.html' %}
和{% load static %}
在Post/urls.py
中添加详情页的url:
url(r'^detail/post-(?P<pk>\d+)$', views.detail, name="detail"),
并添加detail视图
- def detail(request, pk):
- """
- :param request:
- :param pk: 接收到的文章的主键id
- :return:
- """
- return render(request, template_name='Post/blog.html', )
运行看一下吧!
搞定!
继续在视图中添加内容,将假数据改为真实的文章数据
对于多对多的关系来说,可以写成这样:
看一看效果吧!
**接下来就是让我可以上传markdown格式的文本了!
这个暂时先不解决了= =,小本本记下来**
添加分类栏
这里使用自定义模版标签!
首先,在app文件夹下,创建templatetags
文件夹,然后创建一个py文件,里面定义模版标签,目录是这样滴:
然后定义一个分类目录的标签:
- from django import template
- from ..models import Category
-
- register = template.Library()
-
- @register.simple_tag
- def get_categories():
- """
- 分类目录标签
- :return:
- """
- return Category.objects.all()
在前端引用自定义标签时,一定要开头加载自定义的模版标签所在的py文件,{% load simple_tags %}
,然后再使用:
- {% get_categories as category_list %}
- {% for category in category_list %}
- <li><a href="#">{{ category.name }}</a></li>
- {% endfor %}
看一下效果吧!
搞定!
评论功能
评论功能新建一个app
./manage.py startapp comment
不要忘了把它注册到django中
创建模型:
- from django.db import models
-
- class Comment(models.Model):
- name = models.CharField(max_length=20)
- email = models.EmailField(max_length=50)
- website = models.URLField(blank=True)
- text = models.TextField()
- created_time = models.DateTimeField(auto_now_add=True)
-
- post = models.ForeignKey('Post.Post', on_delete=True) # 一篇文章有多个评论
不要忘了注册到admin中啊!
admin.site.register(Comment)
最重要的一步。数据库迁移啊!!!
这里要实现的是点击submit按钮,会提交评论
在comment/views.py
中添加视图:
- from django.shortcuts import render, redirect
- from .models import Comment
- from Post.models import Post
- from django.urls import reverse
-
-
- def submit_comment(request, pk):
- """
- 处理提交的评论
- :param request:
- :return:
- """
- post = request.POST
- comment = Comment()
- comment.name = post.get("name")
- comment.email = post.get('email')
- comment.website = post.get('website')
- comment.text = post.get('message')
- comment.post = Post.objects.get(id=pk)
- comment.save()
-
- return redirect(reverse('Post:detail', kwargs={"pk": pk}))
更改前端页面中的评论部分:
在comment/urls.py
中添加映射:
试一下吧!
搞定!
后面再完善一下。搞成可以回复的啵!小本本记下来~
最新评论
这个也写成自定义标签啵。
- @register.simple_tag
- def get_latest_comment():
- """
- 获取最新评论
- :return:
- """
- comment_list = Comment.objects.all()[:5].only('post', 'text') # 只获取特定字段
- return comment_list
看一下效果
搞定!
阅读量
在Post/models.py
中添加:
在Post/views.py
中添加:
在前端页面添加:
搞定!
好啦~到这里博客基本成型了。就是不好看= =。然后后面继续完善。小本本记下来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。