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
快速上手
- 确保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' #加入后即可安装(注册)
]
-
编写URL和视图函数对应关系【Urls.py】
urlpatterns = [
path('admin/', admin.site.urls),
path('index/',views.index),
path('',views.index),
]
#根据请求地址访问相关的函数
#如请求admin 则返回admin下面的site文件中的urls的函数并执行
#在这里编写一个index地址,返回的是app中views的index函数(未写)
#第三个是默认地址,可指定为某个函数 -
编写视图函数
在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")
-
启动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
将相关信息呈现在自己的网站上