python-web应用程序-Django快速创建项目

python-web应用程序-Django快速创建项目

命令行版本

1.安装Django

python 复制代码
pip install django

安装完成后,在python目录下

c:\XX\pythonx.x
	- python.exe
	- Scripts
		- pip.exe
		- django-admin.exe
	- Lib
		- 内置模块
		- site-packages
			- openpyxl
			- python-docx
			- flask
			- django

安装完成后会保存在- site-packages目录下,为其源码

同时自动生成- django-admin.exe 可帮助使用者快速构建项目

2.将Scripts的整个目录配置成环境变量

在path中加上XXX\pythonx.x\Scripts就可以直接使用Scripts中的所有指令。

3.选择你所要创建项目的目录,进入命令行窗口

输入:

python 复制代码
django-admin startproject 项目名称

我的项目名为web

因此执行后会自动构建项目结构

- web
	- web
		-_init_.py
		-asgi.py
		-settings.py
		-urls.py
		-wsgi.py
	- manange.py

pycharm版本(推荐)

new project - 选择Django项目-项目名web1-Create

创建后会自动生成项目文件,多创建的1.templates(删掉) 2. web1-settings.py中TEMPLATES的'DIR'多了templates,同样删掉[XXXXX] -> []

文件结构分析

- web
	- manange.py   【项目管理、启动、创建app、数据管理】【常用】
		
	- web
		-_init_.py
		-settings.py【项目配置】【频繁需要更改】
		-urls.py	【URL和函数的对应关系】【频繁需要更改】
		-asgi.py	【接收网络请求】
		-wsgi.py	【接收网络请求】
	
- web
	- app1  【功能1】
	- app2	【功能2】
	- app3  【功能3】

创建app

在Terminal中创建app

python manage.py startapp app名称

创建了一个名为app的app

快速上手

  1. 确保app已注册,之前是创建了app的app,还需要注册

注册:在settings.py中 安装(INSTALLED_APPS)中加入该文件app下自动生成的apps中的AppConfig类

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app.apps.AppConfig'   #加入后即可安装(注册)
]
  1. 编写URL和视图函数对应关系【Urls.py

    urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/',views.index),
    path('',views.index),
    ]
    #根据请求地址访问相关的函数
    #如请求admin 则返回admin下面的site文件中的urls的函数并执行
    #在这里编写一个index地址,返回的是app中views的index函数(未写)
    #第三个是默认地址,可指定为某个函数

  2. 编写视图函数

    在views的文件中编写index函数,默认参数为request

    返回文本HelloWorld

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
def index(request):
    return HttpResponse("HelloWorld")
  1. 启动Django项目

    方法一:命令行

python 复制代码
python manange.py runserver

​ 方法二:pycharm自带(推荐)

点击三角形启动-浏览器访问地址后看到页面输出HelloWorld

总结:添加页面只需要两步

-Urls.py  
	添加:
	path('请求地址',访问函数views.index),
-Views.py
	定义函数
	def index(request):
		return HttpResponse("")

返回HTML

使用render(request,'XXX.html')

会在app的templates目录下寻找XXX.html

在app中创建文件夹templates(必须是这个)

templates目录下创建XXX.html

render函数就会按照app注册顺序(在settings中添加的先后顺序)逐一查找XXX.html

改变返回的html

可以通过修改配置实现查找XXX.html

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': []
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

通过修改settings.py中的'DIRS'的值为

'DIRS':[BASE_DIR,'/templates']

1.此时会优先在该项目的目录下寻找templates目录中的XXX.html【不配置无效】

2.当没有写这个配置时,会按照app注册顺序返回templates中的XXX.html文件

写入html中的静态文件

html 复制代码
{% load static %}
<!DOCTYPE html>
<html lang="en">
<link rel="stylesheet" href="{% static 'css/xx.css' %}">
<head>
    <meta charset="UTF-8">
    <title>user</title>
</head>
<body>
 <img src="{% static 'img/图片1.png' %}">
</body>
</html>

在djongo中引入静态文件推荐使用

1.在第一行 {% load 文件夹名 %}

2.使用资源时 {% 文件夹名 ' 资源地址' %}

可以看到在settings.py中

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.0/howto/static-files/

STATIC_URL = 'static/'

将静态资源路径默认为当前文件夹下面的static中

模板语法

从后端返回数据给前端

在views.py中

def ptl(requset):
    name = 'yulin'
    roles = [1,2,3,4]
    return render(requset,'ptl.html',{'n1':name,'n2':roles})

render()第三个参数为字典可在转发时给前端数据

​ 前端接受格式

{{ key }}  
后端的列表list[0]
前端需要使用list.0访问

前端接受:
<h1>{{ n1 }}</h1>
<h1>{{ n2 }}</h1>
<h1>{{ n2.0 }}</h1>
<h1>{{ n2.1 }}</h1>
<h1>{{ n2.2 }}</h1>

前端遍历后端传来的列表

{% for item in n2 %}
	<span>{{ item }}
{% endfor %}

前端遍历后端传来的字典

python 复制代码
后端:
user_info = {'name':"yulin",'class':8}
return render(req,'XXX.html',{'dict':user_info})
前端:
{{dict.name}}   ->yulin
{{dict.class}}  ->8

#对字典便利
{% for key,value in dict.items %}
    <li>{{ key }} =  {{ value }}</li>
{% endfor %}

字典与列表嵌套一样可以获取

Django也支持if语句

{% if n1=='nn' %}
	XXXXXX
{% else %}
	XXXXX
{% endif %}

render()的工作过程

1.读取含有模板语法的HTML文件

2.内部进行渲染(模板语法执行并替换数据)

3.将渲染(替换)完成后的字符串返还给用户浏览器,最后只有html语法的静态页面(即网站源代码)

课程作业

爬取网站

python 复制代码
https://api.github.com/search/repositories?q=language:python&sort=stars

字典与列表嵌套一样可以获取

Django也支持if语句

{% if n1=='nn' %}
	XXXXXX
{% else %}
	XXXXX
{% endif %}

render()的工作过程

1.读取含有模板语法的HTML文件

2.内部进行渲染(模板语法执行并替换数据)

3.将渲染(替换)完成后的字符串返还给用户浏览器,最后只有html语法的静态页面(即网站源代码)

课程作业

爬取网站

python 复制代码
https://api.github.com/search/repositories?q=language:python&sort=stars

将相关信息呈现在自己的网站上

相关推荐
前端小小王30 分钟前
React Hooks
前端·javascript·react.js
迷途小码农零零发40 分钟前
react中使用ResizeObserver来观察元素的size变化
前端·javascript·react.js
娃哈哈哈哈呀1 小时前
vue中的css深度选择器v-deep 配合!important
前端·css·vue.js
算法小白(真小白)1 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
唐小旭1 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
旭东怪2 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
Chinese Red Guest2 小时前
python
开发语言·python·pygame
骑个小蜗牛2 小时前
Python 标准库:string——字符串操作
python