Django2.0:【Django2.0教程】02.入门仪式:Hello World 视频学习笔记

视频地址:02.入门仪式:Hello World

进入到需要放置项目的路径,使用如下命令创建项目:

$ django-admin startproject mysite
这里,mysite为项目名称,也可以是其他的名字。进入到mysite目录之后,可以看到目录结构如下:
.
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files

manage.py:管理整个Django项目的文件;
mysite/__init__.py:python包必须包含的文件;
mysite/settings.py:项目的全局设置文件;
mysite/urls.py:整个网站的路由控制,规定哪些url可以访问;
mysite/wsgi.py:网站部署时会用到的文件。

创建python文件mysite/views.py,写入如下代码:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world")

参数request为固定的参数,表示接收的请求,可以通过其获取请求包含的参数等。HttpResponse()方法返回响应。

在mysite/urls.py文件中添加代码,修改为如下内容:

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index),
]

from . import views表示导入刚才写的views.py。path()方法一共有三个参数,这儿只用到了两个,第一个参数为网址,第二个参数为响应的方法。

使用如下命令启动服务器:

$ python manage.py runserver
打印出如下信息:
Performing system checks...

System check identified no issues (0 silenced).

You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

May 11, 2018 - 05:15:36
Django version 2.0.5, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
打开浏览器,输入网址: http://127.0.0.1:8000 或者 http://localhost:8000

入门仪式完成!

Django1.x版本中,没有path()方法,而是使用url()方法,该方法第一个参数使用正则表达式;在Django2.x中,可以使用re_path()方法,其第一个参数使用正则表达式,如同url()方法。例如:

from django.contrib import admin
from django.urls import re_path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path('^$', views.index),
]
`path(‘admin/’, admin.site.urls)`指向的是后台管理,可以通过网址: http://127.0.0.1:8000/admin 访问。视频中没有出现报错,不过,我在运行的时候遇到报错了:
[11/May/2018 05:32:04] "GET /admin HTTP/1.1" 301 0
Internal Server Error: /admin/
Traceback (most recent call last):
  File "/home/kai/anaconda3/envs/django/lib/python3.6/site-packages/django/contrib/sessions/backends/base.py", line 191, in _get_session
    return self._session_cache
AttributeError: 'SessionStore' object has no attribute '_session_cache'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/kai/anaconda3/envs/django/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/home/kai/anaconda3/envs/django/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 303, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: django_session
...
Ctrl+C关闭服务器。运行如下命令,初始化数据库:
$ python manage.py migrate
目录下多了一个db.sqlite3文件。再次运行服务器,发现输出中少了几句话。再次访问 http://127.0.0.1:8000/admin 。

因为还没有创建用户,所以先去创建用户。使用如下命令:

$ python manage.py createsuperuser

按照提示创建用户。完成之后登录。

如果记不住以上命令,可以使用

$ python manage.py help

获取帮助。

猜你喜欢

转载自blog.csdn.net/zhangk9509/article/details/80280432