• Python系列-Django


    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', '123@qq.com', '123')
    User.objects.create_user('Jerry', '123@qq.com', '123')
    User.objects.create_user('Spike', '123@qq.com', '123')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    查看数据库插件 database navigator

    在这里插入图片描述

    登录、注册的实现

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

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

    在core/urls.py中添加路由

    urlpatterns = [
        path('signup', views.signup, name='signup'),
        path('signin', views.signin, name='signin')
    ]
    
    • 1
    • 2
    • 3
    • 4
    视图

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

    # 注册
    def signup(request):
    	...
    
    # 登录
    def signin(request):
    	...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    准备对应的模板文件

    记得修改setting中TEMPLATES配置

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

    登录后初始界面的实现

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

    在core/urls.py中添加路由

    urlpatterns = [
        path('signup', views.signup, name='signup'),
        path('signin', views.signin, name='signin'),
        path('settings', views.settings, name='settings'),
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    视图
    # 设置个人信息
    def settings(request):
    	...
    
    • 1
    • 2
    • 3
    模板文件
    已有账户,登录后跳转到初始展示界面

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

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

    点击查看视频教程

    完结撒花

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

    Django进阶学习

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

    学习新框架的一点小技巧

    三步走策略

    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直接打开即可
    在这里插入图片描述

    # 创建名为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';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

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

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

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

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

    如果我们登陆成功,那么就会出现下面图中的提示了。
    在这里插入图片描述

    启动服务

    进入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': '',         # 数据库使用的端口
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    python manage.py makemigrations                                                              
    python manage.py migrate
    
    • 1
    • 2
    day 2
    • 支持Redis缓存,支持缓存自动刷新。

    day 20
    • [ ]

    用django+vue实现社交媒体 social_book

  • 相关阅读:
    首发出炉Yolov5/Yolov7涨点神器:华为诺亚2023极简的神经网络模型 VanillaNet---VanillaBlock助力检测,实现暴力涨点
    增删改查mysql
    【开源】基于Vue和SpringBoot的生活废品回收系统
    重学前端-js类型
    c/s架构和b/s架构的区别是什么
    婚纱租赁系统毕业设计,婚纱租赁管理系统设计与实现,论文毕设作品参考
    使用spring cloud config来统一管理配置文件
    【C++】类型转换
    【K8S】学习笔记(一)
    【开源】嵌入式微服务框架MAES
  • 原文地址:https://blog.csdn.net/bl_yang/article/details/128027885