快速上手Django(一) 项目结构、开发环境、开发流程、视图、视图集

本文介绍了Django的基础知识,包括项目目录结构、PyCharm中配置开发环境、常用命令以及Django开发流程。重点讲解了Django的urls配置、视图、视图集,特别是APIView、ViewSet的使用,以及如何处理数据库配置和跨域访问。文章还讨论了Django中ModelViewSet的使用和自定义actions,以及常见问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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

  1. 先打开 mange.py,然后点击IDE运行,会提示一堆东西,表示没有配置参数。然后在pycharm中
    点击edit configurations 编辑配置参数。
    在这里插入图片描述
  2. 点开之后弹出如下对话框,在Parameters 对应的对话框中输入配置参数 runserver 0.0.0.0:8000runserver 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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

西京刀客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值