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

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

相关推荐
爱分享的程序员14 分钟前
前端面试专栏-算法篇:18. 查找算法(二分查找、哈希查找)
前端·javascript·node.js
翻滚吧键盘19 分钟前
vue 条件渲染(v-if v-else-if v-else v-show)
前端·javascript·vue.js
vim怎么退出21 分钟前
万字长文带你了解微前端架构
前端·微服务·前端框架
你这个年龄怎么睡得着的21 分钟前
为什么 JavaScript 中 'str' 不是对象,却能调用方法?
前端·javascript·面试
Java水解23 分钟前
前端常用单位em/px/rem/vh/vm到底有什么区别?
前端
CAD老兵26 分钟前
Vite 如何借助 esbuild 实现极速 Dev Server 体验,并支持无 source map 的源码调试
前端
南屿im27 分钟前
JavaScript 手写实现防抖与节流:优化高频事件处理的利器
前端·javascript
Spider_Man27 分钟前
从零开始构建React天气应用:API集成与UI设计全指南 🌤️
前端·react.js
摸爬滚打李上进34 分钟前
重生学AI第十六集:线性层nn.Linear
人工智能·pytorch·python·神经网络·机器学习
浩浩测试一下43 分钟前
渗透信息收集- Web应用漏洞与指纹信息收集以及情报收集
android·前端·安全·web安全·网络安全·安全架构