Django_1

news/2024/9/22 1:26:28

文章目录

  • 云服务器配置docker&git
    • django:
    • 项目开发:
    • 开发环境:
    • 配置docker、git环境
    • 项目创建
      • 实例
        • 1创建django
        • 2git维护项目
        • 3运行项目
  • IP加入ALLOWED_HOSTS
        • 4通过app写django页面
        • 5创建自己的页面
        • 6流程
        • 优化

云服务器配置docker&git

django:

Django是后起之秀,近些年越来越流行,Youtube(月活20亿+)、Instagram(月活10亿+)等公司采用了Django框架。
可以作为Web、App、小程序、AcWing云端App(AC APP)等各种项目的后端。

开发效率高,生态完善,有官方社区长期支持 运行效率高
项目运行效率瓶颈有很多,比如:数据库查询、网络带宽/延迟、硬盘读写速度等,这些与框架关系不大。
计算密集型的模块可以用C/C++实现,然后编译成动态链接库再import进来。
计算密集型的微服务可以通过thrift等工具对接,微服务的Server端代码可以用C/C++语言实现。
有很多工具可以将Python代码翻译成C/C++,比如Cython、Pypy、AcWing

项目开发:

前后端分离的好处:一个后端支持多种前端。
数据库分为两大类:Mysql 和 Redis,Redis是内存数据库,在内存中存储map。
项目中存储数据的层 (server端) :Redis(内存)>Mysql(存代码、文本、题解、账户分值信息)>云盘(硬盘,存视频和图片)
项目中存储数据的层 (client端): Web sotrage 浏览器缓存 (刷新页面不会消失)、 js内存 (刷新页面会消失)
websocket协议:是一个允许两端都可以发送消息的通信协议。其在用户端和服务端建立一个长连接。

开发环境:

在这里插入图片描述
完全无需配置本地环境。利用AC Terminal直接在云端开发,使用工具:vim、tmux等。不推荐在本地开发
本项目会涉及多台服务器间的网络通信,如果在本地开发,未来不方便调试和部署。
在本地开发无法统一开发环境,部分python包在windows系统上安装困难。
需要租一台具有公网IP的云服务器,并安装docker。
服务器配置无要求
后期可以利用docker随意迁移
在AC Terminal的/var/lib/acwing/docker/images/目录下给大家提供统一的课程docker镜像。
标准化开发环境,避免未来出现软件版本不兼容。
省去配环境的环节。
使用AC Git管理项目代码。
方便回滚代码

配置docker、git环境

scp /var/lib/acwing/docker/images/ django_lesson_1_0.tar server_name: # 将镜像上传到自己租的云端服务器
ssh server_name # 登录自己的云端服务器
docker load -i django_lesson_1_0.tar # 将镜像加载到本地
docker run -p 20000:22 -p 8000:8000 --name django_server -itd django_lesson:1.0 # 创建并运行django_lesson:1.0镜像 (端口要自己去云平台放行)
docker attach django_server # 进入创建的docker容器
passwd # 设置root密码
adduser acs # 创建普通用户acs
usermod -aG sudo acs # 给用户acs分配sudo权限
su -acs# 可切换到用户acs中
ctrl p + ctrl q #挂起容器
返回AC terminal,为acs用户配置别名和免密登录
vim config # 配置别名
ssh-copy-id 别名 # 为acs用户一键添加公钥,免密登录,需要在开始就生成了公钥,不然在这里失败,ssh-keygen可以生成公钥。
scp .bashrc .vimrc .tmux.conf 别名: # 配置一下环境

20000的端口号是方便登陆的,8000的端口号是方便调试;
在这里插入图片描述
在这里插入图片描述
由于用的云服务器是阿里云,默认关闭所有端口,所以还需在阿里云手动配置端口:
在这里插入图片描述
更多->网络安全组->安全配置组->配置规则->手动添加即可

项目创建

打开tumx
django-admin startproject acapp #创建django项目acapp
配置git:
ssh-keygen # 生成密钥用于连接到ac git上面
在git偏好设置中,打开ssh密钥,添加一下刚才生成的公钥
git init # 进到acapp中将其配置成git仓库
打开git,在git上创建一个仓库(项目)按照下面的提示在acs里面配置一下git
git config --global user.name xxx git config --global user.email xxx@xxx.com git add . git commit -m "xxx" git remote add origin git@git.acwing.com:xxx/XXX.git #建立连接

git push --set-upstream origin master再打开一个tmux,(一个tmux用于维护控制台,另一个tmux用于开发)跑一下我们的项目 python3 manage.py runserver 0.0.0.0:8000
ag ALLOWED-HOSTS #全文搜索
找到这个字段所在位置,并将自己的IP地址添加到里面
便可用 IP地址:8000 打开django页面
git 一下代码
注意:在git仓库的根目录下(acapp),vim .gitignore
在文件里面写上 **/__pycache__(两个杠)
再去添加文件的时候就不会再添加这类不必要的文件
python3 manage.py startapp game # 创建gameapp
登录django管理员界面
ctrl c 先关掉控制台
python3 manage.py migrate #同步一下数据库的修改
python3 manage.py createsuperuser # 创建管理员账号
pyhton3 manage.py runserver 0.0.0.0:8000 # 启动控制台
IP地址:8000/admin # 进到管理员登录界面,输入一下刚才创建的账号即可进到管理员界面
cd game touch urls.py mkdir templates vim views # 定义一个index函数 视频位置 1:00:00
vim urls.py # 写一下路由
cd acapp vim urls.py # 将刚才的路由写到总路由里面
models:存储各种数据结构(class等)
views:存储函数
urls:路由
templates:存储网页模板
git一下代码,完工

实例

1创建django

acs@4c3dea94cf88:~$ django-admin --version3.2.8
acs@4c3dea94cf88:~$ django-admin startproject acapp
acs@4c3dea94cf88:~$ lsacapp
acs@4c3dea94cf88:~$ tree .
.
`-- acapp|-- acapp|   |-- __init__.py|   |-- asgi.py|   |-- settings.py|   |-- urls.py|   `-- wsgi.py`-- manage.py
2 directories, 6 files

2git维护项目

acs@4c3dea94cf88:~/acapp$ git initInitialized empty Git repository in /home/zxy/acapp/.git/
# git中生成ssh-key,git其实是用ssh实现的
acs@4c3dea94cf88:~/acapp$ cd 
acs@4c3dea94cf88:~$ ssh-keygen
acs@4c3dea94cf88:~/acapp$ ls -a.  ..  .git  acapp  manage.py
acs@4c3dea94cf88:~/acapp$ git config --global user.name "俊 李"
acs@4c3dea94cf88:~/acapp$ git config --global user.email "lj127*******@163.com"
acs@4c3dea94cf88:~/acapp$ git remote add origin git@git.acwing.com:lj127***/acapp.git
acs@4c3dea94cf88:~/acapp$ git push --set-upstream origin master

3运行项目

#0.0.0.0
acs@4c3dea94cf88:~/acapp$ python3 manage.py runserver 0.0.0.0:8000
访问IP:8000是平台

IP加入ALLOWED_HOSTS

zacs@4c3dea94cf88:~/acapp/acapp$ vim settings.py
ALLOWED_HOSTS = [“8.130.***.245”]
此时 ‘acapp/pycache/’ 中的文件是python预编译好的,用于python运行的系统代码,不需要传到git上 ;
zxy@b1986ee36b7a:~/acapp$ vim .gitignore
#写入
*/pycache/
zxy@b1986ee36b7a:~/acapp$ git commit -m “modify allowed host”
zxy@b1986ee36b7a:~/acapp$ git push

4通过app写django页面

acs@4c3dea94cf88:~$ cd acapp/
acs@4c3dea94cf88:~/acapp$ ls
README.md  acapp  db.sqlite3  manage.py
acs@4c3dea94cf88:~/acapp$ python3 manage.py startapp
usage: manage.py startapp [-h] [--template TEMPLATE][--extension EXTENSIONS] [--name FILES][--version] [-v {0,1,2,3}][--settings SETTINGS][--pythonpath PYTHONPATH] [--traceback][--no-color] [--force-color]name [directory]
manage.py startapp: error: You must provide an application name.
acs@4c3dea94cf88:~/acapp$ python3 manage.py startapp game
acs@4c3dea94cf88:~/acapp$ 
acs@4c3dea94cf88:~/acapp$ ls
README.md  acapp  db.sqlite3  game  manage.py
acs@4c3dea94cf88:~/acapp$ tree.s
-bash: tree.s: command not found
acs@4c3dea94cf88:~/acapp$ tree .
.
|-- README.md
|-- acapp
|   |-- __init__.py
|   |-- __pycache__
|   |   |-- __init__.cpython-38.pyc
|   |   |-- settings.cpython-38.pyc
|   |   |-- urls.cpython-38.pyc
|   |   `-- wsgi.cpython-38.pyc
|   |-- asgi.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
|-- db.sqlite3
|-- game
|   |-- __init__.py
|   |-- admin.py #存储管理员页面里能看到哪些数据库的信息
|   |-- apps.py
|   |-- migrations
|   |   `-- __init__.py
|   |-- models.py #定义网站各种数据库中的表,即存储数据结构,例如User这样的class
|   |-- tests.py
|   `-- views.py #存视图,即函数;每点一个按钮就是调用服务器端的一个函数,这些函数在views.py里实现
`-- manage.py4 directories, 19 files

用git维护刚刚的文件
开始git维护时出现了报错

acs@4c3dea94cf88:~/acapp$ git push
To git.acwing.com:lj1273147443/acapp.git! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@git.acwing.com:lj1273147443/acapp.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

后来维护的代码:

git pull --rebase origin master
git push -u origin master
acs@4c3dea94cf88:~/acapp$ git pull --rebase origin master
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), 416 bytes | 416.00 KiB/s, done.
From git.acwing.com:lj1273147443/acapp* branch            master     -> FETCH_HEAD0e0df72..cf5fb51  master     -> origin/master
First, rewinding head to replay your work on top of it...
Applying: modify allowed host
Using index info to reconstruct a base tree...
M       acapp/settings.py
.git/rebase-apply/patch:14: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
Falling back to patching base and 3-way merge...
Applying: modify allowed host
Applying: modify allowed host
Applying: start app game
acs@4c3dea94cf88:~/acapp$ git push -u origin master
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 2 threads
Compressing objects: 100% (15/15), done.
Writing objects: 100% (19/19), 1.81 KiB | 1.81 MiB/s, done.
Total 19 (delta 4), reused 0 (delta 0)
To git.acwing.com:lj1273147443/acapp.gitcf5fb51..b0ced22  master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.# 更新数据库内容
acs@4c3dea94cf88:~/acapp$ python3 manage.py migrate
# 创建管理员账号
acs@4c3dea94cf88:~/acapp$ python3 manage.py createsuperuser

在这里插入图片描述
终端创建的时候密码可以简单,但在admit创建的时候密码会更复杂
IP:8000/admin :管理员页面
IP:8000 :django正常页面

5创建自己的页面

#django可以创建多个app,但本项目只用一个app
# 现在只是文件,当内容变多可升级为文件夹
# urls是一个路由,用户访问groups(点击)的时候,传入的是一个地址,服务器端需要知道这个地址应该调用哪个函数,因此需要路由。
acs@4c3dea94cf88:~/acapp/game$ touch urls.py 
# 存网页模板html
acs@4c3dea94cf88:~/acapp/game$ mkdir templates

views.py中实现最简单的函数
views.py传入一个链接加参数,该函数返回一个字符串(html的网页代码)

  1 from django.http import HttpResponse2 3 def index(request):4     return HttpResponse("李大钊的第一个网页!!!")   

在urls.py中完成
其中path是一个解析的过程,会返回一个函数

1 from django.urls import path
2 from game.views import index
3
4 urlpatterns = [                                                            
5 	path("",index, name="index"),
6 ]
表示啥都不解析,index函数,name="index"

传过来之后,如果url啥都没有,就调用index函数返回"Hello world"字符串界面

app的URL还需要写到总的URL里面,在acs@4c3dea94cf88:~/acapp/acapp$ vim urls.py
如果是game,返回game_app里的内容;

 16 from django.contrib import admin17 from django.urls import path, include18 19 urlpatterns = [20     path('game/', include('game.urls')),                                   21     path('admin/', admin.site.urls),22 ]

打开 http://8.130.51.245:8000/game/就可以打开网页了
在这里插入图片描述

6流程

用户的请求(网址)——>acapp/urls.py——>
path(’’, include(‘game.urls’)) 即game.urls——>
path(“”,index, name=“index”) 即index函数 ——>
return HttpResponse(“Hello world”)

优化

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pgtn.cn/news/17570.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

记录|深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天

记录|深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天 1. 彩色图片分类效果图 数据集如下: 测试图1如下 训练/验证精确图如下: 优化后:测试图——打印预测标签: 优化后:测试图——打印 预测标…

django_创建菜单界面

文章目录创建菜单界面项目系统设计项目文件结构素材地址创建文件项目配置settings.py配置项目架构配置tempaltes管理html配置js配置views配置urls编辑菜单界面配置menu的js添加按钮添加按钮创建菜单界面 项目系统设计 menu:菜单页面 playground:游戏界…

物体控制

代码 varsetspeed:float1.0; private varmove_x:float; private varmove_y:float;varprojectileprefab:GameObject;varpositiontemp:Vector3;varmytransform:Transform;varprojectilespeed:float50;functionUpdate () { move_x Input.GetAxis("Horizontal")*setspeed…

Postgresql 学习记录,模式,分区表,触发器,事务,窗口函数,视图,建表,约束等

Postgresql 学习记录,模式,分区表,触发器,事务,窗口函数,视图,建表,约束等 PostgreSQL使用一种客户端/服务器的模型。一次PostgreSQL会话由下列相关的进程(程序&#xf…

Django_3

文章目录游戏界面实现修改js模块化增加界面样式实现简易游戏引擎创建人物创建火球类实现碰撞实现动态效果游戏界面实现 修改js模块化 在game/templates/multiends/web.html 并且删除<head></head>里面的AcGame 在game/static/js/src/zbase.js里 在class前加上ex…

十一运夺金基础数据采集工具

点击下载 转载于:https://www.cnblogs.com/JiangHuakey/archive/2010/11/17/1880139.html

卷积神经网络(CNN)使用自己的数据集进行天气识别

记录|深度学习100例-卷积神经网络&#xff08;CNN&#xff09;天气识别 | 第5天 这篇博客将从构建自己的天气数据集开始&#xff0c;到定义模型&#xff0c;编译模型&#xff0c;训练模型及验证模型。并进行一些升级&#xff0c;以使得模型更好。 如ImageDateGenerator进行数据…

使用Tensorflow2.0执行视觉显著性检测(Visual Saliency Detection)

使用Tensorflow2.0执行视觉显著性检测&#xff08;Visual Saliency Detection) 上一篇博客介绍了如何使用Python&#xff0c;OpenCV执行视觉显著性检测&#xff08;Visual Saliency Detection)。这篇博客将介绍如何使用Tensorflow2.0执行显著性检测&#xff0c;这是一个应用图…