[IT新应用]学习网页制作django 20260930
这是一个新的旅程。课程内容来自Brian Yu先生的课程。
他的联系方式:Brian Yu brian@cs.harvard.edu
课程主页:
https://cs50.harvard.edu/extension/web/2020/spring/
我的学习笔记01:
我是从Lectrue3开始学习的。整体上感觉老师讲的非常紧凑,很多以前看书的内容,就被他给串起来,记忆深刻。
搭建环境
学习python django,你需要准备环境。我使用的Miniforge加vscode。
创立项目
安装完后,第一个命令是django-admin startproject lecture3,这里的lecture3是项目名称。
注意,观察一下目录,在当前目录下会多一个lecture3的目录,里面有manage.py,db.sqlite3,然后里面还有一个lecture3的目录。
这里,其实你可以使用python manage.py runserver ,然后就可以看到劳动成果了。访问http://127.0.0.1:8000就可以看到django的初始网页了。
settings.py
在lecture3\lecture3里面有setting.py,是一个设置文档。里面存了INSTALLED_APPS,如果你新加了应用,就需要在这里增加。
项目中的urls.py
在lecture3\lecture3里面有urls.py,是一个目录文档。里面用于存放所有的项目网站路径。如果你新加了应用,就需要在这里增加。增加的路径可以分级管理,比如你的应用路径,可以在apps里面自己再建立一个urls.py去定义。
urls.py的格式如下:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', include("hello.urls")), #备注,这里的hello.urls需要你自己去创建。
]
更多urls.py的写法,预备知识:
你可以参考django官方文档,看看都有哪些写法。另外,我们也要看到里面用到了views.index等等,这些将会在后面讲到。我们通过urls.py将路径,对应到了不同的视图。
https://docs.djangoproject.com/zh-hans/6.1/ref/urls/
from django.urls import include, path
urlpatterns = [
path("index/", views.index, name="main-view"),
path("bio/<username>/", views.bio, name="bio"),
path("articles/<slug:title>/", views.article, name="article-detail"),
path("articles/<slug:title>/<int:section>/", views.section, name="article-section"),
path("blog/", include("blog.urls")),
...,
]
创立应用hello
使用如下命令,你可以创立一个hello的应用。这个应用就类似我们访问google,会有地图或者gmail等,他们就是不同的应用。
python manage.py startapp hello
敲完回车,当前目录下就会多一个hello目录。
这个目录我们需要重点关注的是view.py,(发音view dot pai),它里面主要实现了我们对url中各个路由的实际响应。
当然如前面说的,我们如果要实现每个应用内的url自己独立管理,就需要自己手动创建urls.py。
view.py
对于这个文档,我们需要创立函数,对应不同的路径。此外,简单的,比如这一讲老师提到的访问路径,给与hello的简单响应,我们就用HttpResponse来实现。
具体可以参考 https://docs.djangoproject.com/zh-hans/6.1/ref/request-response/
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello World!")
def brian(request):
return HttpResponse("Hello Brian!")
def albert(request):
return HttpResponse("Hello Albert!")
def grace(request):
return HttpResponse("Hello Grace!")
urls.py
from django.urls import path,include
from . import views
urlpatterns=[
path("",views.index,name="index"),
path("brian",views.brian,name="brian"),
path("albert",views.albert,name="albert"),
path("grace",views.grace,name="grace"),
]
再加上刚才项目中urls.py将hello.urls进行了include。这样就可以实现不同的路径有不同的响应的效果了。
当然,你可能会有疑问,如果要给10000个人打招呼,难道还要写10000条路由吗?
好问题。我们来试试其他形式。
核心的点在于 hello目录的urls.py中,
path("<str:name>",views.greet,name="greet"),
hello目录的views.py中,
def greet(request,name):
return HttpResponse(f"Hello {name}!")
如果调试中出现了错误,可以直接把报错的代码贴给deepseek中请教它。比如我前面的编码中就犯了两次错误,一次是没有在views.py前面使用from django.http import HttpResponse导入HttpResponse就直接引用,结果报错。另一次是没有在greet函数中引入name传参,结果报错。
到这里hello的应用基本就结束了。
创立应用newyear
这个应用是老师参考isitChristmas网页设计的。https://isitchristmas.com/ 唯一的功能就是判断今天是否是圣诞节。
我们开发这个应用,就是体验一下Django的动态页面。这次自己写竟然完全卡住了。过两天再试了。
20260930
浙公网安备 33010602011771号