Django第一次课听课笔记:
1.首先进入/var/lib/acwing/docker/images,然后将django_lesson_1_0.tar 传到server1上(用scp命令).
2.然后登上自己的server1,导入那个镜像:docker load -i django_lesson_1_0.tar。
3.然后映射端口:docker run -p 20000:22 -p 8000:8000 –name django_server -itd django_lesson:1.0
进入docker容器:docker attach django_server
创建非根用户:adduser acs
提供sudo权限:usermod -aG sudo acs
然后挂起容器(先按ctrl+p后按ctrl+q),进入阿里云开放8000和20000端口,然后回到服务器(不是docker上)本地测试登录:ssh acs@localhost -p 20000(发现可以登录)
接着回到terminal,测试远程登录。首先进入.ssh下创建config,配置好别名:
Host django
HostName +ip地址
User acs
Port 20000
然后本地测试ssh django发现可以正常登录,完。【接着也可以配置免密登录,ssh-copy-id django,接着ssh django就能登录了 。
如果想继续配置,则还是回到terminal,然后把tmux和vim配置好:scp .bashrc .vimrc .tmux.conf django: 】
3.然后通过ssh登录进入到docker容器中,创建一个项目:django-admin startproject acapp,进入新建的项目中cd acapp/,然后需要学着用git维护(写错了可以回滚):git init。接着连接好远程的git:(首先需要在acgit上创建一个项目)
git config –global user.name “xuecan yan”
git config –global user.email "yxcyanxuecan@163.com“
git status
git add .
git commit -m “start project”
vim README.md:###一个伟大的史诗级巨著
git status
git add .
git commit -m “add readme”
git remote add origin git@git.acwing.com:yxc/acapp.git(远程连接git)
git push
git push –set-upstream origin master
然后会提示输入密码(因为没实现免密登录)
实现:cat id_rsa.pub 然后复制下来,进入acgit,右上角头像下拉->偏好设置–>ssh密钥 然后把密钥粘进来(起个名字 django_lesson)
接下来进入acapp/ 就能push上去了:
git push
git push –set-upstream origin master
接着运行我们的项目:(最好在tmux上运行)python3 manage.py runserver 0.0.0.0:8000
然后去云平台看一下自己的ip地址 在浏览器内输入自己的ip:8000。然后发现报错了,那个ip不允许访问。
【解决方式:把报错的函数复制下来 在终端内用ag命令查找:ag ALLOWED_HOSTS ,然后发现是在acapp/settings.py内,在ALLOWED_HOSTS中的方括号内用字符串的形式写上自己的ip地址:“182.92.82.66” 保存wq后再次刷新自己的界面,发现django运行成功】
然后就可以继续上传git了,先用git status查看一下,发现红色字体多了一个叫做__pycache的东西,这个文件夹是python预编译好的,是为了加速python运行的,并不是我们的源代码,这种编译好的中间文件会让代码结构显得很乱,因此不要传到git上。
【解决办法:在git仓库的根目录acapp下新创建一个.gitignore文件 ,然后写上*/__pycache_ _即可。这样退出来就可以发现git status不会再显示cache文件了】
然后git add .
git status
git commit -m “modify allowed host”
git push
接着不能老是在django默认的界面写东西 ,所以自己创建:
python3 manage.py startapp game(game是自己起的名 然后这是创建了一个django内的app)
git status
git add .
git status
git commit -m “start app game”
git push
然后进入到那个django的后台(左半边tmux),python3 manage.py runserver 0.0.0.0:8000、python3 manage.py createsuperuser
然后所有代码的更改在:https://git.acwing.com/JackieNiu/acapp中
总文件夹下的urls.py内存路由,所谓路由就是你直接在浏览器中输入的那个ip地址+端口号后面需要额外加的东西。 所以你写什么调用写什么函数都需要from……import+函数名进来,然后再新加一行path,里面include进去文件/地址名。
以下面为例:
在game中新建一个urls.py然后里面写如下内容:
from django.urls import path
from game.views import index,play
urlpatterns = [
path("",index,name="index"),
path("play/",play,name="play")
]
【这里是从game.views下导入的index和play函数】
game/views.py配置:
from django.http import HttpResponse
def index(request):
line1 = '<h1 style="text-align: center">术士之战</h1>'
line4='<a href="/play/">进入游戏界面<|/a>'
line3 ='<hr>'
line2 = '<|img src="https://+图片地址" width=2000>'
return HttpResponse(line1+line4+line3+line2)
def play(request):
line1 = '<h1 style = "text-align: center"> 游戏界面<|/h1>'
line3 = '<a href="/">返回主页面<|/a>'
line2 = '<|img src="https://+图片url地址" width=2000>'
return HttpResponse(line1+line3+line2)
那么主url里面(acapp/acapp/urls.py)就需要加上:
from django.contrib import admin
from django.urls import path,include 【还有这里的include】
urlpatterns = [
path('',include('game.urls')), 【主要是这一行】
path('admin/',admin.site.urls),
]