[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

 

posted @ 2026-09-30 10:01  viphhs  阅读(4)  评论(0)    收藏  举报