Python系列-Django

文章目录

  • Python系列-Django
    • 用django实现社交媒体 social_book
      • 基本演示,点击可查看视频
      • 整体项目的创建
      • 数据库设计,基本用户创建
        • 表的设计 models.py
        • 创建用户
        • 查看数据库插件 database navigator
      • 登录、注册的实现
        • 路由
        • 视图
        • 准备对应的模板文件
      • 登录后初始界面的实现
        • 没有账户,注册后跳转到设置个人信息,然后再跳转到初始展示界面
        • 路由
        • 视图
        • 模板文件
        • 已有账户,登录后跳转到初始展示界面
      • 搜索、发帖、退出功能的实现
      • 完结撒花
    • Django进阶学习
      • 学习新框架的一点小技巧
      • 三步走策略
        • step1
        • step2
        • step3
      • 学习内容
        • day 0 2023/03/12
        • day 1 2023/03/20
          • 下载与安装
          • 创建数据库与启动
            • 创建数据库
            • 启动服务
          • 设置与调试
        • day 2
        • day 20
    • 用django+vue实现社交媒体 social_book

Python系列-Django

适用对象:有一定python和django基础,对此技术感兴趣,或者想快速尝试、实现效果的。
原则:

  • 实用为主,效果为主
  • 不重复造轮子,但应该知道其工作原理
  • 官网是最好的教程,其它只是辅助

用django实现社交媒体 social_book

参考资料

基本演示,点击可查看视频

整体项目的创建

  • 初始化django项目:django-admin startproject social_book
  • 创建core应用:python manage.py startapp core ,将core应用添加到settings.py/INSTALLED_APPS
  • 和core同级目录,创建media文件夹,存放媒体文件(图片,头像)
  • 和core同级目录,创建static文件夹,存放静态文件(CSS,JS)
  • 和core同级目录,创建templates文件夹,存放模板文件(HTML)

数据库设计,基本用户创建

  • 需求分析(数据是什么;数据具有哪些属性;数据与属性的特点是什么)
    了解系统中需要存储的数据;了解数据的存储特点;了解数据的生命周期需要清楚的问题:
    A.实体对实体之间的关系(1对1;1对多;多对多)
    B.实体所包含的属性有什么
    C.那些属性或属性的组合可以唯一标识一个实体
  • 逻辑分析(使用ER图对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
  • 物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)
  • 维护设计(1.对新的需求进行建表;2.索引优化;3.大表拆分)

表的设计 models.py

  • Profile 整体介绍
    user 关联的外键为当前活跃的用户
    id_user 用户id
    bio 介绍
    profileimg 头像
    location 地域

  • Post 帖子
    id 唯一标志
    user 属于哪个用户
    image 图片
    caption 标题
    created_at 创建时间
    no_of_likes 点赞数

  • Likepost 点赞数
    post_id 文章id
    username 用户名

  • Followerscount 关注者统计
    user 用户
    follower 关注者

创建数据模型,生成数据表
1、检测你对模型文件的修改,并且把修改的部分储存为一次迁移 python manage.py makemigrations
2、数据库里创建新定义的模型的数据表 python manage.py migrate

创建用户

# 在terminal中输入 python .\manage.py shell
# 执行以下命令
from django.contrib.auth.models import User

User.objects.create_user('Tom', '[email protected]', '123')
User.objects.create_user('Jerry', '[email protected]', '123')
User.objects.create_user('Spike', '[email protected]', '123')

查看数据库插件 database navigator

Python系列-Django_第1张图片

登录、注册的实现

两个非常重要的概念:路由和视图

  • 路由:路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果,也就是 URL 与 Django 的视图建立映射关系。
  • 视图:一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应。

路由

在core/urls.py中添加路由

urlpatterns = [
    path('signup', views.signup, name='signup'),
    path('signin', views.signin, name='signin')
]

视图

在core/urls.py中添加视图函数

# 注册
def signup(request):
	...

# 登录
def signin(request):
	...

准备对应的模板文件

记得修改setting中TEMPLATES配置

        'DIRS': [os.path.join(BASE_DIR, 'templates')],

登录后初始界面的实现

没有账户,注册后跳转到设置个人信息,然后再跳转到初始展示界面

路由

在core/urls.py中添加路由

urlpatterns = [
    path('signup', views.signup, name='signup'),
    path('signin', views.signin, name='signin'),
    path('settings', views.settings, name='settings'),
]

视图

# 设置个人信息
def settings(request):
	...

模板文件

已有账户,登录后跳转到初始展示界面

路由、视图函数、模板文件

搜索、发帖、退出功能的实现

点击查看视频教程

完结撒花

个人主页、点赞、关注的实现。

Django进阶学习

基于python3.8Django4.1.3的博客。
视频地址

学习新框架的一点小技巧

  • 不要看太多教程,1~2个为佳,快速构建起来后,再适配、修改、拓展;

    Django 文档 | Django 文档 | Django (djangoproject.com)

    大江狗的博客 | 大江狗的技术及生活博客 (pythondjango.cn)

    liangliangyy/DjangoBlog: 基于Django的博客系统 (github.com)

  • 掌握框架的设计哲学和思想

    The web framework for perfectionists with deadlines.

    Django 是一个高级 Python Web 框架,它鼓励快速开发和干净、务实的设计。 由经验丰富的开发人员构建,它解决了Web开发的大部分麻烦,因此您可以集中精力 编写应用程序时无需重新发明轮子。它是免费和开源的。

三步走策略

step1

了解当前参考的项目,能正常运行

step2

改造成我们需要的样子

step3

熟练掌握、拓展全新的功能

学习内容

day 0 2023/03/12

  • 本次内容介绍,项目启动:python .\manage.py runserver

day 1 2023/03/20

  • 数据库变更为PostgreSQL, 本次操作以windows为例,linux大部分一致,小部分差异自行查阅资料解决。后续开发差不多也会切换到linux上去。
    tips:更换数据库引擎,一定要把对应的数据库启动起来。程序才能正常运行。
下载与安装

下载地址

我下载的版本是:postgresql-14.7-1-windows-x64.exe

tips:下载完成后,执行exe安装包安装,过程中会让你设置管理员密码123456,和给一个默认的端口号5432,并且可以选择一些安装包,我选择了pgAdmin数据库管理工具,这样就可以直接管理数据库了。

创建数据库与启动
创建数据库

1、通过pgAdmin创建

2、通过命令行创建,本人采用此种方式,软件安装完成后,会有SQL Shell直接打开即可
Python系列-Django_第2张图片

# 创建名为socialbook的数据库
CREATE DATABASE socialbook; 
# 创建用户名和密码
CREATE USER myuser WITH ENCRYPTED PASSWORD '123456'; 
# 给创建的用户授权
GRANT ALL PRIVILEGES ON DATABASE socialbook TO myuser;

# 以下设置可手动进行设置,也可以在postgresql.conf中进行配置
# 设置客户端字符为utf-8,防止乱码
ALTER ROLE myuser SET client_encoding TO 'utf8';
# 事务相关设置 - 推荐
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
# 设置数据库时区为UTC - 推荐
ALTER ROLE myuser SET timezone TO 'UTC';

然后就是登陆过程了,首先是 Server,也就是说数据库 url,默认是在本地(所以是 localhost),没有该动的就直接回车下一步好了。

接着是 Database,也即我们数据库,这里默认是使用 postgres,因为我们是第一次登陆,所以这里也就直接回车下一步就好了。

再接着是 Port,也就是端口号,默认是 5432,如果你安装的时候改动了,那么此时你最好也改成你当时改的端口,否则可能导致连接失败。

然后是 Username,也就是 PostgreSQL 的用户,这里一般默认是超级用户(postgres,这里不同于 MySQL 的 root,要注意),而我们也是第一次登陆,没有建立新账户,直接默认回车下一步即可。

最后要输入的则是口令,也就是登陆数据库的密码,这里我们已经在上边设置过了,直接输入后回车即可。

如果我们登陆成功,那么就会出现下面图中的提示了。
Python系列-Django_第3张图片

启动服务

进入bin所在目录,执行:pg_ctl start -w -D "D:\devsoft\postgresql\data"

设置与调试

要让Python与Postgres一起工作,你需要安装“psycopg2”模块

pip install psycopg2

修改项目文件夹里的settings.py的文件,添加创建的数据库和用户信息。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',   # 数据库引擎
        'NAME': 'mydb',         # 数据库名,Django不会帮你创建,需要自己进入数据库创建。
        'USER': 'myuser',     # 设置的数据库用户名
        'PASSWORD': 'mypass',     # 设置的密码
        'HOST': 'localhost',    # 本地主机或数据库服务器的ip
        'PORT': '',         # 数据库使用的端口
    }
}

设置好后,连续使用如下命令如果没有出现错误,就可以在Django项目中使用PostgreSQL数据库。得益于优秀的ORM设计,更换数据库不需要动任何代码。

python manage.py makemigrations                                                              
python manage.py migrate

day 2

  • 支持Redis缓存,支持缓存自动刷新。

day 20

  • [ ]

用django+vue实现社交媒体 social_book

你可能感兴趣的:(教程,python,django,django,python,后端)