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

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

命令行版本

1.安装Django

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.选择你所要创建项目的目录,进入命令行窗口

输入:

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函数(未写)
#第三个是默认地址,可指定为某个函数
  1. 编写视图函数

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

    返回文本HelloWorld

from django.http import HttpResponse
from django.shortcuts import render

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

    方法一:命令行

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中的静态文件

{% 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 %}

前端遍历后端传来的字典

后端:
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语法的静态页面(即网站源代码)

课程作业

爬取网站

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语法的静态页面(即网站源代码)

课程作业

爬取网站

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

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

  • 44
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值