Django

Django

1.Django创建
//安装 Django 
python -m pip install Django
django-admin startproject My_Django
└──My_Django 	//根目录
│	├── manage.py  			//管理 Django 项目的命令行工具。
│	└──My_Django 			//包含项目
│	│   ├── _init__.py 			//python的包证明是python文件(初始化文件)
│	│   ├── settings.py 		//配置文件
│	│   ├── urls.py 			//目的url设置
│	│   ├── asgi.py				//项目运行在 ASGI 兼容的 Web 服务器上的入口
│	│   └── wsgi.py				//项目运行在 WSGI 兼容的 Web 服务器上的入口
//在与manage.py的同级目录下
python manage.py startapp polls
└──polls
|	|-migrations.py  <!--会在应⽤booktest⽬录下的migrations⽬录中⽣成迁移⽂件-->
|	│   └── _init__.py 
|	|-_init__.py 	 <!--空⽂件,可以使⽬录当做包使⽤-->
|	|-admin.py  	 <!--⽂件跟⽹站的后台管理相关-->
|	|-apps.py  		 <!--项⽬整体配置⽂件-->
|	|-models.py  	 <!--⽂件跟数据库操作相关-->
|	|-tests.py  	 <!--⽂件⽤于开发测试⽤例-->
|	|-views.py 		 <!--⽂件跟接收浏览器请求,进⾏处理,返回⻚⾯相关-->

应用创建成功后,需要安装才可以使⽤,也就是建立应用和项目之间的关联。

在 My_Django/settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装。

在这里插入图片描述

2.编写第一个视图

polls/views.py

from django.http import HttpResponse


def index(request):
   return HttpResponse("Hello, world. I Love AL.")

需要将一个 URL 映射,因此需要创建 URLconf,在 polls 目录里新建一个 urls.py 文件。

└──polls
|	|-migrations.py  <!--会在应⽤booktest⽬录下的migrations⽬录中⽣成迁移⽂件-->
|	│   └── _init__.py 
|	|-_init__.py 	 <!--空⽂件,可以使⽬录当做包使⽤-->
|	|-admin.py  	 <!--⽂件跟⽹站的后台管理相关-->
|	|-apps.py  		 <!--项⽬整体配置⽂件-->
|	|-models.py  	 <!--⽂件跟数据库操作相关-->
|	|-tests.py  	 <!--⽂件⽤于开发测试⽤例-->
|	|-urls.py 		 <!-- 用于创建URLconf-->
|	|-views.py 		 <!--⽂件跟接收浏览器请求,进⾏处理,返回⻚⾯相关-->

polls/urls.py

from django.urls import path

from . import views

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

下一步是要在根 URLconf 文件中指定我们创建的 polls.urls 模块。在 My_Django/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
   path('polls/', include('polls.urls')),
   path('admin/', admin.site.urls),
]
//运行测试
python manage.py runserver

用浏览器访问 http://localhost:8000/polls/ (注意不是http://localhost:8000/ !!!!!)

出现如下界面:

image-20220505161120562

11.Django 配置信息
11.1 Settings.py文件介绍

该文件用于配置整个网站的环境和功能,核⼼配置必须有项目路径、秘钥配置、域名访问权限、App列表、中间件、资源文件、模板配置、数据库的连接方式。

项目路径 BASE_DIR

主要通过OS模块读取当前项⽬在计算机系统的具体路径,该代码在创建项目时自动生成,⼀般情况下无需修改 。

秘钥配置 SECRET_KEY

这是⼀个随机值,在项目创建时⾃动生成,⼀般情况下无需修改。主要用于重要数据的加密处理,CSRF机制和会话Session等数据加密。

调试模式 DEBUG

该值为布尔类型。如果项目部署上线,则改为False,否则会泄露项目的相关信息

域名访问权限 ALLOWED_HOSTS

当DEBUG为False时,ALLOWED_HOSTS为必填项,否则程序⽆法启动,如果想允许所有域名访问,可设置 ALLOW_HOSTS=[‘*’]

App列表 INSTALLED_APPS

告诉Django有哪些App。如果在项⽬中创建了App,就必须在App列表添加App名称。将My_Django项⽬已创建的App添加到App列表

INSTALLED_APPS= [ 
	'django.contrib.admin',	# 内置的后台管理系统 
	'django.contrib.auth',	# 内置的⽤户认证系统 
	'django.contrib.contenttypes',	# 记录项⽬中所有model元数据(Django的ORM框架)
   'django.contrib.sessions',	# Session 会话功能,⽤于标识当前访问⽹站的⽤户⾝份,记录相关⽤户信息
   'django.contrib.messages',	# 消息提⽰功能
   'django.contrib.staticfiles',	# 查找静态资源路径
   ]

资源路由 STATIC_URL

静态资源指的是⽹站中不会改变的⽂件。

11.2 数据库配置(连接Mysql)

​ 默认情况下,Django连接的是自己带的sqlite数据库。

  1. Mysql提前创建好数据库

    //在mysql命令行中创建一个叫cxb的数据库
    create database cxb default charset utf8mb4;
    
  2. 安装包

    pip install pymysql
    pip install mysqlclient 
    
  3. 修改Django的settings.py文件

    创建一个Django项目,在项目文件夹下的settings.py下,找到原来的sqlite配置文件。

    注销或删除sqlite配置,添加以下配置。

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',  # 默认
            'NAME': 'cxb',  # 连接的数据库
            'HOST': '127.0.0.1',  # mysql的ip地址
            'PORT': 3306,  # mysql的端口
            'USER': 'root',  # mysql的用户名
            'PASSWORD': '123456'  # mysql的密码
        }
    }
    
  4. 修改项目文件夹下的__init.py文件

    import pymysql
    
    pymysql.install_as_MySQLdb()
    
  5. 修改polls/model.py

    from django.db import models
    
    # Create your models here.
    
    
    class UserInfo(models.Model):
        id = models.AutoField('id', primary_key=True)
        userName = models.CharField('姓名', max_length=20, null=False)
        loginNum = models.IntegerField('登录账号')
        userPassword = models.CharField('密码', max_length=16, null=False)
    
        class Meta:
            db_table = 'Person_Massage'
    
  6. 迁移数据库到Mysql

    python manage.py makemigrations
    python manage.py migrate
    
  7. 在数据库中查看

    use cxb;
    show tables;
    

  8. 下载Navicat fo MySQL

    Navicat for mysql 破解版安装 - 代码如风~~~ - 博客园 (cnblogs.com)

    连接并对表格数据进行修改

  9. 查看表格

    //查看表的总体
    DESC Person_massage;
    
    //查看表的所有内容
    select * from person_massage;
    
  10. 展示数据库的表格

    polls.views.py

    from django.shortcuts import render
    from .models import UserInfo
    
    
    def index(request):
       # 查询出Person对象信息,也就是数据表中的所有数据
       # 一行数据就是一个对象,一个格子的数据就是一个对象的一个属性值
       objs = UserInfo.objects.all()
    
       # locals函数可以将该函数中出现过的所有变量传入到展示页面中,即index.html文件中
       return render(request, 'index.html', {"objs": objs})
    

    polls/templates/index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>Title</title>
    </head>
    <body>
    <table border="1">
       <thead>
       <tr>
           <td>id</td>
           <td>userName</td>
           <td>loginNum</td>
           <td>userPassword</td>
       </tr>
       </thead>
       <tbody>
       {% for obj in objs %}
           <tr>
               <td>{{ obj.id }}</td>
               <td>{{ obj.userName }}</td>
               <td>{{ obj.loginNum }}</td>
               <td>{{ obj.userPassword }}</td>
           </tr>
       {% endfor %}
    
       </tbody>
    </table>
    </body>
    </html>
    

    启动

    python manage.py runserver 127.0.0.1:8000
    

    http://127.0.0.1:8000/polls/

    可见

    在这里插入图片描述

12. 创建一个管理员账号

创建一个能登录管理页面的用户

python manage.py createsuperuser

输入用户名 邮箱 密码

将UserInfo添加到索引页面

polls/admin.py

from django.contrib import admin

from .models import UserInfo

admin.site.register(UserInfo)

启动开发服务器

python manage.py runserver

输入账号密码登录后看到如下界面

在这里插入图片描述

可以看到5个用户的信息

在这里插入图片描述

可以对用户信息进行修改

在这里插入图片描述

13. ORM - 单表实例

​ django中内嵌了ORM框架,不需要直接⾯向数据库编程,⽽是定义模型类,通过模型类和对象完成数据表的增删改查操作。

  1. Object: 对象 – 类
  2. Mapping : 映射
  3. Relations:关系,关系数据库中的表

​ 通过类和对象操作对应的数据表,不需要写sql语句

13.1 数据库添加

polls/urls.py

path('', views.add_user),

polls/views.py

def add_user(request):
   user = UserInfo.objects.create(userName="lrq", loginNum=666666, userPassword="ffffff")
   print(user, type(user))
   return HttpResponse("<p>数据添加成功!</p>")
13.2 数据库查找

使用 all() 方法来查询所有内容。

objs = UserInfo.objects.all()

filter() 方法用于查询符合条件的数据。

user = UserInfo.objects.filter(userName="lrq", loginNum=666666, userPassword="ffffff")

exclude() 方法用于查询不符合条件的数据。

user = UserInfo.objects.exclude(userName="lrq", loginNum=666666,  userPassword="ffffff")

get() 方法用于查询符合条件的返回模型类的对象符合条件的对象只能为一个

如果符合筛选条件的对象超过了一个或者没有一个都会抛出错误。

user = UserInfo.objects.get(userName="lrq", loginNum=666666,  userPassword="ffffff")

order_by() 方法用于对查询结果进行排序。

注意:

  • 参数的字段名要加引号
  • 降序为在字段前面加个负号 -
user = UserInfo.objects.order_by("loginNum")
user = UserInfo.objects.order_by("-loginNum")

reverse() 方法用于对查询结果进行反转。

user = UserInfo.objects.order_by("-loginNum").reverse()

count() 方法用于查询数据的数量返回的数据是整数。

user = UserInfo.objects.count()
user = UserInfo.objects.filter(userName="lrq", loginNum=666666, userPassword="ffffff").count()
13.3 数据库删除

delete()

user = UserInfo.objects.filter(userName="lrq", loginNum=666666, userPassword="ffffff").delete()
objs = UserInfo.objects.all().delete()
13.4 数据库修改

update(字段名=更改的数据)

objs = UserInfo.objects.all().update(loginNum=666666)
14. 将django部署到服务器上
14.1. 购买服务器

① 华为云服务器地址:

共建智能世界云底座-华为云 (huaweicloud.com)

② 阿里云服务器地址

阿里云-上云就上阿里云 (aliyun.com)

③ 腾讯云服务器地址:

腾讯云 - 产业智变 云启未来 (tencent.com)

选择ubuntu版本购买

14.2. 服务器基础配置
# 在开始安装Python之前,请在系统上安装一些必需的软件包。登录到您的Ubuntu系统并执行以下命令:
sudo apt update
sudo apt install software-properties-common
# 打开系统上的终端,然后为系统配置Deadsnakes PPA。
sudo add-apt-repository ppa:deadsnakes/ppa
点击 [Enter]
apt install python3.9
# 等待安装完成。通过执行以下命令检查Python版本:
python3.9 -V
#安装pip
apt-get update
apt-get upgrade

# 安装pip3
sudo apt-get install python3-pip

# 检查 pip 是否安装成功
pip3 -v
14.3. 配置mysql
# 安装mysql service
cd /home
wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb
dpkg -i mysql-apt-config_0.8.15-1_all.deb

选择 mysql-8.0

image-20220512024719577

选择ok

image-20220512024738093

apt-get update
apt-get install mysql-server
#启动mysql服务
mysql -u root -p

输入密码登录

输入quit退出

#安装mysql client
cd /home
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/libmysqlclient-dev_5.7.34-1ubuntu18.04_amd64.deb
pip install mysqlclient 

#安装pymysql
pip install pymysql
14.4. 将项目代码放置在linux上

方法一(如果项目代码在github上)

cd /home
# 替换成你自己的项目git网址
git clone https://xxxxx

#更新项目到本地
# myproj为git之后自动创建的项目文件夹
cd myproj
git fetch --all && git reset --hard origin/master && git pull

方法二 (如果项目代码在本地)

利用SFTP(软件: Termius)

在这里插入图片描述

在左边找到项目在本地的目录,直接将目标文件拖到home目录下

在这里插入图片描述

14.5. 导入数据库
#进入数据库
mysql -u root -p

#创建一个名为cxbnb的数据库
mysql> create database cxbnb default charset=utf8mb4 default collate utf8mb4_unicode_ci;

# 新建用户cxb,密码为123456(不要使用默认的root用户管理,这样会和linux下的root冲突!!!)
mysql> create user 'cxb'@'localhost' identified by '123456';      

#赋予cxb管理cxbnb的权限
mysql> grant all privileges on cxbnb .* to 'cxb'@'localhost';    

#刷新权限
mysql> flush privileges;    

#退出
mysql> flush privileges; 

#重新登录查看是否正确设置
mysql -h localhost -u cxb -p

输入密码后看到以下界面即为成功

在这里插入图片描述

输入quit退出

#进入项目
cd /home/django-datta-able-master/

#根据requirement.txt安装依赖
# 开发机上导出(如果已经有不需要这一步)
pip3 freeze > requirements.txt

# 查看依赖
cat requirements.txt 

# 上传服务器,然后在服务器安装依赖
pip install -r requirements.txt 

#数据库迁移
python3 manage.py makemigrations
python3 manage.py migrate
14.6. 修改项目配置
#在setting.py中修改databases
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 默认
        'NAME': 'cxbnb',  # 连接的数据库
        'HOST': '127.0.0.1',  # mysql的ip地址
        'PORT': 3306,  # mysql的端口
        'USER': 'cxb',  # mysql的用户名
        'PASSWORD': '123456'  # mysql的密码
    }
}

在setting.py中的输入服务器的ip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-78lrbSIS-1666154103480)(C:\Users\14179\AppData\Roaming\Typora\typora-user-images\image-20220512144700541.png)]

#在__init.py中加入
import pymysql
pymysql.install_as_MySQLdb()
14.7. 启动项目
python3 manage.py runserver 0.0.0.0:80

输入ip地址后即可看到

在这里插入图片描述

14.8. 反向代理

即使我们输入python3 manage.py runserver 0.0.0.0:80后可以看到网页,但是我们关掉服务器后,网页会挂掉,因此我们要用反向代理将该代码一直运行。

#查看是否有screen
which screen

#如果没有,进行安装
apt install screen

#进入项目目录
cd /home/django-datta-able-master

#创建虚拟终端
screen -R cxb

#进入后输入
python3 manage.py runserver 0.0.0.0:80
#点击 <Enter>
# Ctrl + A + D 退出

输入screen -ls查看已经存在的screen终端

在这里插入图片描述

#重新回到创建的终端
screen -r 74165.cxb

#删除终端
screen -R 74165.cxb -X quit
#注:如果在Attached状态下,使用screen -d *****(id),先退出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我胡萝北

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值