2020
- 一个HTML如何通过django来展示到浏览器
用户视角的网页构成:
- HTML模板:类似树干
- 展示的数据:类似树叶
- HTML静态语言:形成树干树叶的语言
- JS脚本语言:页面各种动态行为的脚本
- CSS样式:美化树干树叶的装饰方法
- 用户访问平台的逻辑
- 用户打开浏览器,输入url
- django服务器接到这个url的请求
- django服务器根据这个url找到对应的后台函数
- 找到后台函数后,后台函数执行(做一件事),返回一个html首页模板,外加初始化的数据;返回打包给浏览器
- 浏览器接到html模板+数据后,组合成一个完整的网页展示给用户
- django项目中按照上述过程实践
- django服务中添加 url和后台函数的映射=>django跟进url找到对应的后台函数
映射关系:urls.py
,自动生成映射如下:
"""pro_0804 URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
实际是列表,每个元素都有一个映射;每个元素调用一个库函数,2个值:url、后台函数名
格式:
[
库函数('url1', '后台函数1'),
库函数('url2', '后台函数2'),
]
- 后台函数写在view.py中,也可以新建其他的
所以urls.py
中导入view的所有内容from pro_0804.app_0804.views import *
## 映射表更新
urlpatterns = [
path('admin/', admin.site.urls),
path('welcome/', welcome), # 进入主题
]
注:
鼠标不要点击pycharm外,否则django会监控文件更改,而自动启动;然后重启发现代码错误标红,则服务会终止
Error 1 :Page not found
error 1解决办法:
浏览器访问时,输入http://10.202.141.60:8000/welcome/
,访问正常image.png
Error 2:didn't return an HttpResponse object
控制台打印print表示urls无误解决方法:
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
# Create your views here.
def welcome(request):
# print("welcome to pro!")
return HttpResponse("welcome to pro!")
# HttpResponse 返回一个字符串,后续返回的json格式的字符串也可以使用它
An HTTP response class with a string as content.
This content can be read, appended to, or replaced.
# HttpResponseRedirect 用于重定向到其他url
# render 用来返回html页面和页面初始数据
Return a HttpResponse whose content is filled with the result of calling
django.template.loader.render_to_string() with the passed arguments.
网友评论