文章目录
一、Django 基础
Django 官方文档:https://docs.djangoproject.com/zh-hans/4.0/topics/
1. django 项目的目录结构
我们使用Pycharm创建一个django项目:
一般django 项目目录结构
如下,默认的新建的文件如下:
-
urls.py
urls.py本质上就是一个标准的python文件,这个python文件的作用就是在URL请求和处理该请求的视图函数之间建立一个对应关系,换句话说,它就是一个url请求映射表。
除了在项目根目录下有一个urls.py之外,项目的每个应用下都会有一个urls.py配置文件。urls.py 决定了哪个请求由哪个函数来处理
-
manage.py
新建一个django项目,都会产生manage.py的文件。manage.py是在创建每个Django project时自动添加在项目目录下的,其功能是将Django project放到sys.path目录中,同时设置DJANGO_SETTINGS_MODULE环境变量为当前project的setting.py文件。#!/usr/bin/env python import os import sys if __name__ == "__main__": # 设置环境变量DJANGO_SETTINGS_MODULE,值为djangoProject1.settings,即django项目的settings.py所在路径 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoProject1.settings") try: from django.core.management import execute_from_command_line except ImportError: # The above import may fail for some other reason. Ensure that the # issue is really that Django is missing to avoid masking other # exceptions on Python 2. try: import django except ImportError: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) raise # 执行命令 sys.argv值为 ['F:/work_code/djangoProject1/manage.py', 'runserver', '8000'] execute_from_command_line(sys.argv)
-
venv目录
要使用django,首先需要建立一个虚拟工作环境,在这个虚拟工作环境中可以安装包,将其与其他项目隔离,主要解决Python软件开发过程中版本与依赖性问题以使得每个项目有自己独立的安装目录。
2. 开发环境(Pycharm 启动django)
1)先找到mange.py
- 先打开
mange.py
,然后点击IDE运行,会提示一堆东西,表示没有配置参数。然后在pycharm中
点击edit configurations
编辑配置参数。
- 点开之后弹出如下对话框,在
Parameters
对应的对话框中输入配置参数runserver 0.0.0.0:8000
或runserver 127.0.0.1:8000
配置完成之后点击ok就完成了。
2)项目配置远程python解释器
参考自己其他博文:https://docker.blog.csdn.net/article/details/116452696
python解释器是远程情况处理(重要)
场景:一般情况下,我们的web后台还是运行在linux环境下,我们需要使用远程python解释器,让真实代码运行在远端。
解决方法:
1) 给项目配置远程python解释器
注意:上图的path mappings比较重要,是你本地代码和远端linux代码目录映射关系。一定留意进行配置。Pychram启动Django项目时,会上传代码到该指定目录。
配置完远程解释器后,它会,自动上传代码到你刚才配置映射的远程主机上,如果项目比较大的话,这里需要稍微等待一下。
等提醒文件同步完成,就可以执行IDE的项目启动按钮,远程启动项目了。
3)点击edit configurations
编辑配置参数
如之前一样,如下图,配置 启动参数即可!
此外,处理启动参数,我们还可以写一些环境变量参数,以方便控制Django的行为。例如:
PYTHONUNBUFFERED=1;DJANGO_SETTINGS_MODULE=webapp.settings.dev
- DJANGO_SETTINGS_MODULE : 使用Django时要通知Django当前使用的是哪个配置文件。可以改变环境变量 DJANGO_SETTINGS_MODULE 实现这一点。
当我们使用manage.py运行起本地的web服务器时,为了让Django知道使用哪个配置文件,就指定了DJANGO_SETTINGS_MODULE的环境变量的路径
关于自动同步配置(重要)
该步骤非常重要,虽然我们第一步配置了 本地和远端的映射,当我们Pycharm配置的多个远端时,只有一个自动上传生效,我们需要配置确认,切换项目时,自己手动切换。
选择Tool -> Deployment,如下:
确认您当前的自动上传配置选项!
3. 快速上手Django常用命令(编写第一个页面)
在现实的开发中,不同的项目依赖同一个库的不同版本很常见,我们需要一个Python虚拟环境的主要目的就是为python项目创建一个独立的环境,即每个项目拥有自己独立的依赖环境。
安装python、pip python虚拟机
sudo apt install python3
sudo apt install python3-pip
sudo apt install virtualenv
创建虚拟环境,如下 就会创建一个 quick-start 的目录
sudo virtualenv quick-start
创建完成后,激活虚拟机环境, 如下现在shell的提示框多了环境的名字(quick-start)
# source quick-start/bin/activate
(quick-start) [root@dev workspace]#
使用 deactivate 可以退出该虚拟环境
(quick-start) [root@dev workspace]#deactive
通过 pip 安装正式发布版本Django
在你已创建并激活一个虚拟环境后,在虚拟环境下输入以下命令:
$ python -m pip install Django
上面 我们已经设置好开发环境,我没来创建一个名为quickstart项目。Django自带的django -admin
命令行,可以很方便的创建项目。
(quick-start) [root@dev workspace]# django-admin startproject quickstart
(quick-start) [root@dev workspace]#
(quick-start) [root@dev workspace]# pwd
/root/workspace
(quick-start) [root@dev workspace]# ls
golang quick-start quickstart
(quick-start) [root@dev workspace]#
一个项目可以有很多应用,我们可以使用 django-admin 命令创建应用。
(quick-start) [root@dev workspace]# cd quickstart/
(quick-start) [root@dev quickstart]# django-admin startapp myapp
(quick-start) [root@dev quickstart]# ls
manage.py myapp quickstart
(quick-start) [root@dev quickstart]#
创建之后需要让Django知道应该使用它,在 quickstart/settings.py
, 在INSTALLED_APPS中添加应用名。代码如下:
启动django服务
(quick-start) [root@dev quickstart]# python manage.py runserver 0.0.0.0:8001
编写一个页面
vi myapp/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("hello world")
那么如何让django知道使用这个函数呢?Django提了一个 URLConf。
我们再myapp目录下创建 urls.py 文件,添加代码如下:
vi myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path(r'myapp/',views.index),
]
上面的文件放在myapp下,用来负责这个应用的路由。一个项目一般包含多个应用,因此比较好的方式是在项目级别页配置路由,这个配置用于将请求匹配分发到各个应用。现在更改项目项目路由配置,编辑 quickstart/urls.py
文件。代码如下:
urlpatterns = [
path(r'admin/', admin.site.urls), #直接定义路由
path(r'',include('myapp.urls')), #引用应用中的路由
]
修改 ALLOWED_HOSTS
,让你的ip可以访问django
vi quickstart/settings.py
修改ALLOWED_HOSTS 为如下,容许所有ip访问:
ALLOWED_HOSTS = ['*']
启动Django
python manage.py runserver 0.0.0.0:8000
4. django一般开发流程
Django 使用 MVC/MTV 模式,其本质是为了保持各组件之间松耦合关系。
- Model(模型):负责业务对象与数据库的对象(ORM)
- Template(模版):负责如何把页面展示给用户
- View(视图):负责业务逻辑,并在适当的时候调用 Model 和 Template
此外,Django 还有一个 url 分发器,它的作用是将一个个的 URL 页面请求分发给不同的 view 请求, view 再调用相应的 Model 和 Template 。
用户访问,首先通过urls进行访问路径的匹配,然后转到匹配到的方法或函数,转到 views 进行逻辑处理。
若需要访问数据库,则通过 models 访问数据库,获取需要的数据,返回给 views。
views 处理完成后,若是API调用方式,直接返回数据给用户;否则通过 template 对指定的模板进行渲染,然后将对应的 html 返回给页面。
1) 定义 URL
Django学习–urls.py详解
参考URL: https://www.cnblogs.com/hskullbk/p/9216343.html
urls.py:又称为URL分发器(路由配置文件)
url配置格式:
urlpatterns = patterns('视图前缀',
url(r'^正则表达式1/$', '视图函数1', name="url标识1"),
url(r'^正则表达式2/$', '视图函数2', name="url标识2"