创建Django项目
C:\Users\35211>d: 先切换到想要创建项目的盘符
D:\>django-admin startproject 项目名称 创建项目
D:\> python manage.py startapp 子应用名称 创建子应用
Django的操作
迁移表
python manage.py makemigrations 执行表迁移命令
python manage.py migrate 表迁移
执行python manage.py migrate无法创建表
执行时报:No migrations to apply.
1. 进入数据库,找到django_migrations的表,删除该子应用对应的所有记录
python manage.py dbshell
delete from django_migrations where app='app01';
2. 删除该子应用下的migrations下的除了__init__.py之外的文件。
3. 执行下面这两条命令:(在项目目录下)
python manage.py makemigrations
python manage.py migrate
注:如果个别app表依然无法建立可以在后面添加app名称:python manage.py makemigrations/migrate app01
django项目和子应用各文件作用
│ db.sqlite3 # sqlite数据库文件(settings.py中默认连接的数据库)
│ manage.py # 项目管理脚本
│
├─app01 (子应用目录)
│ │ admin.py # 配置django admin后台
│ │ apps.py
│ │ models.py # 配置django表,负责和数据库交互,进行数据处理
│ │ tests.py
│ │ views.py # 接收请求,进行业务处理,返回应答
│ │ init.py
│ │
│ └─migrations
│ init.py
│
└─mysite
│ settings.py # 项目配置文件
│ urls.py # 总路由
│ wsgi.py
│ init.py
修改Django项目的配置
- 在子应用同级目录下创建一个templates文件夹
- 配置settings.py文件 , 配置模板的路径
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR,'templates')],
},
]
- 配置静态目录
#像ccs和js这些静态文件如果想要使用必须在这里配置路径
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
- 注释CSRF
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',
]
- 修改settings.py中时区
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
- 配置MySQL数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1', #域名
'PORT': 3306, #端口号
'USER': 'root', #MySQL的用户名
'PASSWORD': 'root', #MySQL的密码
'NAME': 'test', #MySQL数据库的名称
}
}
path() 函数
Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。
语法格式:
path(route, view, kwargs=None, name=None)
-
route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
-
view: 用于执行与正则表达式匹配的 URL 请求。
-
kwargs: 视图使用的字典类型的参数。
-
name: 用来反向获取 URL。
Django2. 0中可以使用 re_path() 方法来兼容 1.x 版本中的 url() 方法,一些正则表达式的规则也可以通过 re_path() 来实现 。
from django.urls import include, re_path
urlpatterns = [
re_path(r'^index/$', views.index, name='index'),
re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
re_path(r'^weblog/', include('blog.urls')),
...
]