第一个Django项目
pycharm创建一个Django项目,项目文件目录如下:
day01/ # 根目录
manage.py # Django命令行工具
day01/ # 项目配置目录
__init__.py # 空文件,告诉python这个目录是python包
settings.py # 项目配置文件
urls.py # 项目所有urls声明汇总
asgi.py # ASGI服务器的入口文件
wsgi.py # WSGI服务器的入口文件
- pycharm创建项目会默认穿件一个templates文件夹【需要删除】
- 在settings.py中【删除】“DIRS”:[os.path.join(BASE_DIR, ‘templates’) ] ——> “DIRS”:[]
1、终端运行
python manage.py runserver
更换端口:
python manage.py runserver 8080
2、创建应用APP
1-在manage.py同级目录下创建新应用:
python manage.py startapp demo
这将会创建一个 demo
目录,它的目录结构大致如下:
demo/
__init__.py
admin.py 【固定不用动】Django默认提供了admin后台管理
apps.py 【固定不用动】app启动类
migrations/ 【固定不用动】数据库变更记录
__init__.py
models.py 【重要】 对数据库操作
tests.py 【固定不用动】单元测试的
views.py 【重要】 视图函数
2-在项目配置文件day01\settings.py
的INSTALLED_APPS中加入demo
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'demo', # 注册app
]
3-然后编辑day01/urls.py
, 把demo应用的urls也加入到项目的urls中去,如下所示:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('demo.urls')) # 加入app对应urls
]
3、编写视图函数和URL配置
**1-**编辑demo/views.py
, 新增一个名为index的视图函数。每个视图函数的第一个默认参数都必需是request
, 它是一个全局变量。Django把每个用户请求封装成了request
对象,它包含里当前请求的所有信息,比如请求路径request.path
, 当前用户request.user
以及用户通过POST提交的数据request.POST
。
index视图函数通过调用HttpReponse
方法打印输出当前的请求路径request.path
。
# demo/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
**2-**使用python manage.py runserver
重启服务器,打开http://127.0.0.1:8000/index/会显示"Hello, world. You're at the polls index."
4、templates模板
返回html页面需要使用render
# 默认去当前目录下的templates文件夹中寻找对应html文件(根据app注册顺序找 )
return render(request,"XXX.html")
5、静态文件
-static
-css 【存放CSS样式】
-img 【存放图片】
-js 【存放js样式】
加载静态文件
# req.html
{% load static %} # 加载
模板语法
1、列表
在render中添加一个字典,引入变量。读取列表,需要通过. 去索引
2、for语法,进行循环读取
3、读取字典
- 可以根据字典的键去获取值:{{n3.name}}、{{n3.salary}}
- 或者for循环键
4、判断语句if
请求和响应
响应方式:
return HttpResponse("返回请求") # 将字符串内容返回给请求者
return render(request,'xxx.html',{"n1":name}) #读取html的内容+渲染(替换)-->字符串,返回给用户浏览器
# 重定向
return redirect("https://www.baidu.com")
避免Django表单提交出现错误,需要在form中加入语句 "{% csrf_token %}"