Django学习--基础篇(一)

一、创建项目

1.打开命令行终端
2.进入某个目录(项目放在哪里)
3.执行命令创建项目(已添加环境变量)
django-admin startproject 项目名称
Pycharm创建(需要专业版)

  1. 在这里插入图片描述

二、默认项目文件介绍

2.1 默认文件

在这里插入图片描述

三、APP的创建和说明

3.1 APP创建

项目
- app,用户管理【表结构,函数,HTML模板】
- **注意:**一般情况下,一个项目创建一个app即可。

在Pycharm的终端输入命令

python manage.py startapp [app名称]

在这里插入图片描述

四、启动运行django

4.1 app注册

  1. 确保app已注册【settings.py】【apps.py】
    在这里插入图片描述
  2. 编写URL和视图函数对应关系【urls.py】【app->views.py】
    在这里插入图片描述
  3. 编写视图函数(接收用户请求的)【views.py】
    在这里插入图片描述

4.2 启动django项目

(1)命令行启动(项目路径下)

python manage.py runserver

4.3 templates模板

  1. 优先去项目根目录的templates中寻找
  2. 根据app的注册顺序,在每个app下的 templates目录中寻找

注意: templates目录一般写在app目录下

去app目录下寻找templates目录下寻找相关的html页面(根据app的注册顺序,逐一去他们的templates目录中找)

在这里插入图片描述

如果是在项目的根目录中创建的templates目录,则需要在settings.py添加:
'DIRS': [os.path.join(BASE_DIR, 'templates')], 需导入os包
'DIRS': [Path(BASE_DIR, 'templates')] python 3.4版本之后,支持路径管理库pathlib,代替os用于路径的处理(未验证)

在这里插入图片描述

4.4 静态文件

在开发过程中一般将图片、CSS、js都当作静态文件处理。

  1. static目录
    在app目录下创建static文件夹
    在这里插入图片描述
  2. 引用静态文件
    在这里插入图片描述

五、django模板语法

5.1 模板语法

本质上:在HTMl中写一些占位符,由数据对这些占位符进行替换和处理。

在这里插入图片描述
在这里插入图片描述

六、请求和响应

6.1 请求响应

  1. 在[urls.py]文件中添加something的url及对应的函数(可根据需求创建something.html文件)
    在这里插入图片描述
  2. 在[views.py]文件编写相关的请求和响应:
from django.shortcuts import render, HttpResponse, redirect

def something(request):
    # request是一个对象,封装了用户通过浏览器发送过来的所有数据

    # 1.[请求] 获取请求方式GET/POST
    print(request.method)

    # 2.[请求] 在URL上传值 /something/?n1=12345$n2=6789
    print(request.GET)

    # 3.[请求] 在请求体中提交数据
    print(request.POST)


# 响应:
    # 4.[响应] HttpResponse("返回内容"),内容字符串内容返回给请求者
    # return HttpResponse("返回内容")

    # 5.[响应] 读取HTML的内容 + 渲染(替换) -> 字符串,返回给用户浏览器
    # return render(request,'something.html',{"title":"来了"})
    # 6.[响应] 让浏览器重定向到其他页面,重定向:是浏览器自己去寻找跳转的页面
    return redirect("https://www.baidu.com")

6.2 案例:用户登录

  1. [urls.py]文件
    # 案例:用户登录
    path('login/', views.login),
  1. [views.py]文件
def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    # 如果已经满足GET请求了,已经return,后续代码就不执行了,则可以省去else

    # else:
        # 如果是POST请求,获取用户提交的数据
        # print(request.POST)

    username = request.POST.get("user")
    password = request.POST.get("pwd")

    # 进行校验
    if username == "root" and password == "123":
        # return HttpResponse("登录成功")
        # 登录成功跳转到中国联通
        return redirect("http://www.chinaunicom.com.cn/")
    # 已经登录成功实现跳转了,已经return,后续代码将不执行,可省略else
    # else:
        # return HttpResponse("登录失败")
    return render(request, 'login.html', {"error_msg": "用户名或密码错误"})
  1. app下的templates目录下的login.html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>用户登录</h1>
<form method="post" action="/login/">
<!--    {% csrf_token %} 解决403 CSRF 报错-->
    {% csrf_token %}
    <input type="text" name="user" placeholder="用户名">
    <input type="password" name="pwd" placeholder="密码">
    <input type="submit" value="提交">
    <span style="color:red;">{{error_msg}}</span>
</form>

</body>
</html>

登录页面报错:
在这里插入图片描述
解决方法
在这里插入图片描述
验证:
登录成功,页面跳转
在这里插入图片描述
在这里插入图片描述
登录失败:
在这里插入图片描述

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值