1. 建立project
django-admin startproject mysite
自动生成项目所需的文件夹和文件
由2层目录组成根目录mysite+子目录mysite
mysite/ #根目录,重命名对项目运行没有影响
manage.py #运行web,或者使用数据库的API等都通过这个文件
mysite/ #包含实际项目的目录(python包),引用内部模块时的名字,比如mysite.urls
__init__.py #python包的标识
settings.py #设置默认配置,最基础的比如设置后台使用的web服务器和数据库参数
urls.py #路由设置,根据url匹配相应的view
asgi.py #暂时没用到
wsgi.py #暂时没用到
2. 创建应用
python manage.py startapp polls
创建后会生成应用的目录
polls/
__init__.py
admin.py #管理页面相关设置
apps.py
migrations/ #数据库配置文件存放目录
__init__.py
models.py #建立数据库表项
tests.py #测试编码
views.py #如何展示页面(页面逻辑)
3. 模型
3.1 创建
- 也就是创建数据库表(Django无法创建数据库,需要先自己创建然后在setting.py中进行相关的配置)
- 在models.py中编写chart和column的定义
Django中models对应数据库的chart,field对应数据库的column
from django.db import models
from django.utils import timezone
from datetime import date
# Create your models here.
class Menu(models.Model):
date=models.DateField("日期")
dishes=models.CharField(max_length=20)
def __str__(self):
return self.dishes+str(self.date)
class Order(models.Model):
dishes=models.ForeignKey(Menu,on_delete=models.CASCADE)
user=models.CharField(max_length=20)
order_time=models.DateTimeField("订餐时间",auto_now=True)
3.2 激活并生成配置
- 需要先让项目识别这个应用
在settings.py中添加app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls.apps.PollsConfig' #新添加的,对应polls\apps.py中定义的类
]
- 在terminal中运行指令创建数据库配置文件,根据model.py进行修改,并生成polls\migrations\0001_initial.py文件(完整的Django数据库配置指令)
python manage.py makemigrations orders
python manage.py sqlmigrate orders 0001 #可以用来查看对应的SQL命令
3.3 执行配置
python manage.py migrate
4. URL
在app文件夹下新建urls.py
根目录mysite\mysite\url.py需增加以下配置
path('orders/',include('orders.urls')) #include指向实际urlconf的位置
- 配置应用的url(基于类的视图,待研究)
from django.urls import path
from . import views
app_name = 'orders'
urlpatterns=[
path('',views.IndexView.as_view(),name='index'),
] #IndexView是再view.py里定义的类
5. 视图(view)
在view.py中编辑URL对应的index视图
from django.shortcuts import render
from django.views import generic
from .models import Menu,Order
class IndexView(generic.ListView):#继承ListView类,返回一个可迭代的对象
template_name = 'orders/index.html' #视图模板,模板放置位置mysite\orders\templates\order\
context_object_name = 'Menus' #返回的list名字,并将该迭代对象以Menus为名传递到模板中
model=Menu#指定数据表
6. 模板
在mysite\orders\templates\order\提供1个对应的模板
7. 静态文件管理
7.1 静态文件夹目录
在app目录下新建static-app名字文件夹,用来存放该app专用的静态文件
7.2 静态文件路径配置
在settings中默认的静态文件路径为static/,表示在查找静态文件时会从项目根目录下的static或应用程序APP下的名为static的文件夹中开始查找
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/
STATIC_URL = 'static/'
7.3 static标签
HTML中使用static标签来加载静态文件
(1)先用{% load static %}导入
(2)引用格式:{% static ‘static下层文件夹名/静态文件名’ %}
- 网上下载的HTML模板可以用正则表达式替换静态文件路径
#查找
"(images/|css/|js/|icon/)(\S*)"
#替换
"{%static 'dashboards/$1$2' %}"