HelloWorld
$ mkdir helloworld && cd helloworld
$ django-admin startproject config .
$ ls -R
.:
config manage.py
./config:
asgi.py __init__.py settings.py urls.py wsgi.py
$ python manage.py migrate
$ python manage.py runserver
onfig/settings.py文件控制我们项目的设置,urls.py告诉Django在响应浏览器或URL请求时要构建哪些页面,而wsgi.py,代表Web Server Gateway Interface,帮助Django提供我们最终的网页。manage.py文件用于执行各种Django命令,如运行本地Web服务器或创建新的应用程序。最后,但不是最不重要的,是asgi.py文件,这是Django从3.0版本开始的新文件,它允许运行可选的异步服务器网关接口。
创建应用程序
Django使用项目和应用程序的概念来保持代码的简洁和可读性。一个Django项目中包含一个或多个应用程序。
$ python manage.py startapp pages
$ ls -R
.:
config db.sqlite3 manage.py pages
./config:
asgi.py __init__.py __pycache__ settings.py urls.py wsgi.py
./config/__pycache__:
__init__.cpython-38.pyc settings.cpython-38.pyc urls.cpython-38.pyc wsgi.cpython-38.pyc
./pages:
admin.py apps.py __init__.py migrations models.py tests.py views.py
./pages/migrations:
__init__.py
$ vi config/settings.py
# config/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'pages', # new
]
- admin.py 是内置 Django 管理程序的配置文件。
- apps.py 是应用程序本身的配置文件。
- migrations/跟踪models.py文件变化,以便我们的数据库和models.py保持同步。
- models.py是我们定义数据库模型的地方,Django会自动将其翻译成数据库表。
- tests.py 是我们的应用程序专用测试文件。
- views.py 是处理我们的网络应用的请求/响应逻辑的地方。
URL、视图、模型、模板
当你输入一个URL,比如https://djangoforbeginners.com,Django首先找到与主页匹配的URLpattern。这个URLpattern指定了一个视图,然后确定页面的内容(通常来自数据库模型),最后确定一个模板,用于样式设计和基本逻辑。最终的结果会以HTTP响应的形式发回给用户。
创建view:
# pages/views.py
from django.http import HttpResponse
def homePageView(request):
return HttpResponse('Hello, World!')
下面的URLpattern有三个部分。
- 针对空字符串'' 的Python正则表达式
- 对视图homePageView的调用,
- 可选的名为'home'的URL模式
# pages/urls.py
from django.urls import path
from .views import homePageView
urlpatterns = [
path('', homePageView, name='home'),
]
用户请求使用空字符串''所代表的主页,Django应该使用名为homePageView的视图。
更新我们的config/urls.py文件。
# config/urls.py
from django.contrib import admin
from django.urls import path, include # new
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('pages.urls')), # new
]