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

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

相关推荐
pr_note31 分钟前
python|if判断语法对比
python
liangshanbo12152 小时前
写好 React useEffect 的终极指南
前端·javascript·react.js
apocelipes3 小时前
golang unique包和字符串内部化
java·python·性能优化·golang
Geoking.4 小时前
NumPy zeros() 函数详解
python·numpy
Full Stack Developme4 小时前
java.text 包详解
java·开发语言·python
哆啦A梦15884 小时前
搜索页面布局
前端·vue.js·node.js
_院长大人_4 小时前
el-table-column show-overflow-tooltip 只能显示纯文本,无法渲染 <p> 标签
前端·javascript·vue.js
丁浩6665 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
B站_计算机毕业设计之家5 小时前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业
Q_Q5110082855 小时前
python+uniapp基于微信小程序的旅游信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js