安装python

电脑中有多个python环境,使用conda来管理一下

1
conda create -n djangostudy python=3.9.16

创建好后使用命令

1
conda activate djangostudy

Django 安装

在虚拟环境中使用下列命令来安装

1
pip install django==4.1.7

安装好后会有 django 源码库django-admin.exe 工具,这个工具是用来创建django项目,自动生成文件和文件夹的

Django 项目生成

在终端创建

在想创建项目的路径下面输入命令

1
django-admin startproject <项目名称>

使用pycharm创建

会在终端创建的基础上添加templates目录,反正我也没有pycharm,等有了再说吧

Django 项目结构

Django 中的 APP

app是可以理解为一个应用模块,一个大项目中有多个分类的模块,每个模块负责一部分功能,这样的模块就是app,在每个app中可以有【独立的表结构,函数,html模板,css等】

我们使用 manager.py 就可以来创建app了

1
python manage.py startapp <app名称>

比如我创建一个叫 app1 的 app,创建好后,目录结构如下所示

快速上手

注册app

在 settings.py 中注册app

1
2
3
4
5
6
7
8
9
INSTALLED_APPS = [
"app1.apps.App1Config", # 或者直接写 'app1',
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
]

写url和视图的关系

urls.py 中引入需要的视图并添加url

1
2
3
4
5
6
7
8
9
10
from django.contrib import admin
from django.urls import path

from app1 import views # 引入视图

urlpatterns = [
path("admin/", admin.site.urls),
path('api/v1/login', views.login), # 添加url
path('api/v1/<int:nid>/edit', views.edit), # 添加url,并且动态的传值给函数
]

编写视图函数

app1 目录下的 views.py 文件中编写刚才的函数

1
2
3
4
5
6
from django.shortcuts import render,HttpResponse

# Create your views here.

def login(request):
return HttpResponse("欢迎使用")

启动项目

1
python manage.py runserver

然后在浏览器输入 http://127.0.0.1:8000/api/v1/login/ 就可以看到了

templates模板

如果在Django开发中,只想返回一个字符串,我们就可以像上面一样,使用 HttpResponse来返回,但是如果我们需要返回一个html页面则需要返回一个 render()

1
2
def user_list(request):
return render(request,"user_list.html") # 根据app的注册顺序,去其目录下的templates文件夹中寻找页面

如果在项目settings.py 中配置了模板了路径,那么就在对应的路径中找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [os.path.join(BASE_DIR,'templates')], # 优先去项目根目录下的templates寻找,找不到就根据app的注册顺序去其目录下的templates文件夹中寻找页面
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
],
},
},
]

静态文件

图片,css,js文件等,都要在app目录下创建 static 目录,将其放在 static 文件夹下,因为我们在 settings.py 文件中写了静态文件的路径

1
2
3
4
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/

STATIC_URL = "static/"

在模板中使用静态文件的时候,我们在上方先引入,然后再使用

1
2
3
{% load static %}

<img src="{% static 'img/1.png' %}">

模板语法

和jsp的语法差不多