当前位置:   article > 正文

Django 开发教程(一)_djiango教程

djiango教程

初识Django

1. 安装django

pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 1

django安装后的目录结构:

c:\python310
	- python.exe
	- Scripts
		- pip.exe
		- django-admin.exe #工具,创建django项目
	- Lib
		- 内置模块
		- site-packages
			- openpyxl
			- python-docx
			- flask
			- django       #框架的源码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2. 创建Djiango项目

django中项目会有一些默认的文件和默认文件夹
  • 1

2.1 在终端

  • 打开终端

  • 进入某个目录(指定需要创建的目录)、

    E:\> cd .\python_web\demo_django\
    
    • 1
  • 执行django的创建命令

    django-admin.exe startproject 项目名
    
    • 1
  • 创建成功后的目录结构如下:

    mysite
    	- mysite
        	- __init__.py
            - asgi.py
            - settings.py
            - urls.py
            - wsgi.py
       	- manage.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

2.2 Pycharm

注意, python解释器目录和项目目录
  • 1
  • 使用pycharm企业版

  • 直接在菜单中创建 Django菜单进行创建

  • 通过命令行创建的是标准的,但是pycharm创建的,会增加一些新的目录 templates目录, 在settings.py里添加了写数据

    TEMPLATES = [
        'DIRS':[os.path.join(BASE_DIR, 'templates')]
    ]
    
    • 1
    • 2
    • 3

2.3 默认创建项目的文件介绍

mysite
	- mysite
    	- __init__.py
        - asgi.py		# 接受网络请求(异步) 
        - settings.py	# 项目配置文件, 配置数据库,密码,注册app等.
        - urls.py		# URL路径和函数的对应关系
        - wsgi.py   	# 接受网络请求(同步)
   	- manage.py			# 项目管理,启动项目,创建app, 数据管理
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. APP

-项目
 	- app 用户管理 [表结构,函数,HTML模板, CSS]
 	- app 订单管理 [表结构,函数,HTML模板, CSS]
 	- app 后台管理 [表结构,函数,HTML模板, CSS]
 	- app 网站
 	- app API
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 创建一个app

    python manage.py startapp app01
    python manage.py startapp app02
    
    • 1
    • 2
  • app的文件结构

    --app01
    	- __init__.py
        - admin.py   # django后台提供admin后台管理
        - apps.py	 # app启动类	
        - migratioins # 数据库变更记录
        	- __init__.py
        - models.py  # 【重要】, 对数据库进行操作
        - tests.py   # 单元测试
        - views.py   # 【重要】, url定义执行的函数
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

4. 快速上手

4.1 app注册

在settings.py中配置需要注册的app
  • 1

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config'
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.2 编写url和 试图函数的对应关系

urls.py

from django.contrib import admin
from django.urls import path

from app01 import views

urlpatterns = [
    #path('admin/', admin.site.urls),
    path('index/', views.index)
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.3 编写视图函数

views.py

from django.shortcuts import render

# Create your views here.

def index(request):    # 响应试图函数必须有个request参数
    return HttpResponse("欢迎使用")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.4 启动djiango项目

  • 通过命令行启动

    python manage.py runserver
    
    • 1
  • pycharm启动

    点击 启动按钮 进行启动

4.5 模板使用

views.py

def user_list(request):
    # 默认会去app目录下,寻找templates目录,再在这个目录中查询user_list.html这个文件
    # 如果跟目录下有user_list.html, 也只会在app里查找,如果需要使用根目录的,则需要更改settings里的配置
	return render(request, "user_list.html")
  • 1
  • 2
  • 3
  • 4

当前app目录下,创建一个templates目录

4.6 静态文件

静态文件必须在当前的app目录下面的static目录

静态文件包含js, css, image等资源

  • 在app目录下创建static目录
  • 在html中, 顶部执行 {% load static %}
  • 使用 “{% static ‘/css/sss.css’ %}”
{% load static %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap/css/bootstrap.css' %}">
</head>
<body>
    <h1>用户登陆</h1>

    <input type="text" class="btn btn-primary" value="新建"/>

    <img src="/static/img/11.jpg" alt=""/>
    <script src="{% static 'js/jquery-3.7.1.min.js'}"></script>
    <script src="{% static 'plugins/bootstrap/js/bootstrap.js'} %"></script>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

5. 模板语法

本质上, 在html中写一些占位符, 由数据进行替代和处理

5.1 普通变量的传递

name="自定义标题1"
return render(request, "tpl.html", {"n1":name})
  • 1
  • 2
<div>{{n1}}</div>
  • 1

5.2 数组的传递

roles = ["张三","李四","王五"]
return render(request, "tpl.html", {"roles":roles})
  • 1
  • 2

数组遍历

    <table>
        <thead>
            <tr>
            <th>id</th>
            <th>姓名</th>
            </tr>
        </thead>
        <tbody>
            {% for item in roles %}
                <tr>
                <td>1</td>
                <td>{{item}}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

直接取数组元素

    <div>
        <span>{{roles.0}}</span>
        <span>{{roles.1}}</span>
        <span>{{roles.2}}</span>
    </div>
  • 1
  • 2
  • 3
  • 4
  • 5

5.3 字典的传递

userinfo = {"name":"bell","exp":1000, "lv":25 }
return render(request, "tpl.html", {"user":userinfo})
  • 1
  • 2
    <div>
        <div>{{user.name}}</div>
        <div>{{user.lv}}</div>
    </div>
  • 1
  • 2
  • 3
  • 4

字典用for进行循环

    <!--字典也可以 for循环-->
    <ul>
    {% for item in user.keys %}
        <li> {{item}} </li>
    {% endfor %}
    </ul>

    <ul>
    {% for k, v in user.items %}
        <li> {{k}} = {{v}} </li>
    {% endfor %}
    </ul>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

5.4 列表套字典

    user_list = [
        {"name":"zs", "age":23,"score":100},
        {"name":"ls", "age":23,"score":100},
        {"name":"ww", "age":23,"score":100},
    ]
    return render(request, "tpl.html", {"user_list":user_list})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
    <!--列表里套字典 user_list.0.name, user_list.1.age-->
    <ul>
    {% for item in user_list %}
        <li> {{item.name}} {{item.age}} {{item.score}} </li>
    {% endfor %}
    </ul>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5.5 模板中的条件语句

    <!--模板中条件语句-->
    {% if n1 == "自定义标题" %}
        <a>aaaa</a>
    {% elif n1 == "新" %}
        <a>bbbb</a>
    {% else %}
        <a>cccc</a>
    {% endif %}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号