第一个Django项目

38 阅读2分钟

第一个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
]

image-20231125111220152

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.")

image-20231125111251024

**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 %}   # 加载

image-20231125111307220

模板语法

1、列表

在render中添加一个字典,引入变量。读取列表,需要通过. 去索引

image-20231125111321633

2、for语法,进行循环读取

image-20231125111334406

3、读取字典

  • 可以根据字典的键去获取值:{{n3.name}}、{{n3.salary}}
  • 或者for循环键

image-20231125111347768

4、判断语句if

image-20231125111406361

image-20231125111418788

请求和响应

响应方式:

return HttpResponse("返回请求") # 将字符串内容返回给请求者
return render(request,'xxx.html',{"n1":name})   #读取html的内容+渲染(替换)-->字符串,返回给用户浏览器# 重定向
return redirect("https://www.baidu.com")
避免Django表单提交出现错误,需要在form中加入语句 "{% csrf_token %}"

image-20231125111433051