2020年注定是一个不平凡的一年!坚持就是胜利,一起加油!

  至于为什么使用 Django,也不想说太多。个人喜欢,这里不做介绍。直接进入主题。show me the code!!!

  python 的环境什么的,这里就不赘述了,Python 包含了一个名为 SQLite 的轻量级数据库,所以暂时不自行设置一个数据库。使用的是

C:\WINDOWS\system32>python --version
Python 3.7.4 C:\WINDOWS\system32>python -m django --version
3.0.3

  验证安装好的 Django 是否能被 Python 识别,可以在命令行查看:

C:\WINDOWS\system32>python
Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https://conda.io/activation Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.get_version())
3.0.3
>>>

  事情准备就绪之后,开始下一步。开始之前提一点:

项目和应用的区别:应用程序是一个Web应用程序,它可以做一些事情——例如,Weblog系统、公共记录数据库或小型投票应用程序。项目是特定网站的配置和应用程序的集合。

一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。

  创建项目,我们需要初始化一些系统配置,包括数据库配置,Django配置和应用程序配置。---即一个Django项目实例需要的设置项集合。

打开命令行,cd(进入)到一个你想放置你代码的目录,然后执行下面的命令:

E:\work\py_dj>django-admin startproject mysite
# startproject 创建了以下的目录结构

mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
mysite:根目录是项目的容器。它的名字对Django来说并不重要;您可以将其重命名为任何您喜欢的名称。
  manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin and manage.py 获取所有 manage.py 的细节。
  里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).
    mysite/__init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。如果你是 Python 初学者,阅读官方文档中的 更多关于包的知识。
    mysite/settings.py:Django 项目的配置文件。如果你想知道这个文件是如何工作的,请查看 Django 配置 了解细节。
    mysite/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。阅读 URL调度器 文档来获取更多关于 URL 的内容。
    mysite/asgi.py: An entry-point for ASGI-compatible web servers to serve your project. See How to deploy with ASGI for more details.
    mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。阅读 如何使用 WSGI 进行部署 了解更多细节。

  检验创建的 Django 项目是否创建成功,请切换到外城的 mysite 目录执行命令

E:\work\py_dj\mysite>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks... System check identified no issues (0 silenced). You have 17 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.
February 18, 2020 - 15:43:04
Django version 3.0.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[18/Feb/2020 15:43:12] "GET / HTTP/1.1" 200 16351
[18/Feb/2020 15:43:12] "GET /static/admin/css/fonts.css HTTP/1.1" 304 0
[18/Feb/2020 15:43:12] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 304 0
[18/Feb/2020 15:43:12] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 304 0
[18/Feb/2020 15:43:12] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 304 0

  访问出现以下页面为成功。

  更改端口

默认情况下,runserver 命令会将服务器设置为监听本机内部 IP 的 8000 端口。

如果你想更换服务器的监听端口,请使用命令行参数。举个例子,下面的命令会使服务器监听 8080 端口:

E:\work\py_dj\mysite>python manage.py runserver 8080
Watching for file changes with StatReloader
Performing system checks... System check identified no issues (0 silenced). You have 17 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.
February 18, 2020 - 15:55:46
Django version 3.0.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CTRL-BREAK.

  完整的关于开发服务器的文档可以在 :djamdin:`runserver` 参考文档中找到。

  在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,

这样你就能专心写代码,而不是创建目录了。

  你的应用可以存放在任何 Python path 中定义的路径。在这里,和 manage.py 同级目录下创建应用 polls 。这样它就可以作为顶级模块导入,而不是 mysite 的子模块。

E:\work\py_dj\mysite>py manage.py startapp polls

E:\work\py_dj\mysite>

  这将会创建一个 polls 目录,它的目录结构大致如下:

polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py

  这个目录结构包含了应用的全部内容。

  先创建一个视图,打开  polls/views.py

##polls/views.py¶
from django.http import HttpResponse def index(request):
return HttpResponse("Hello, world. You're at the polls index.")

  这里返回了一个 http 响应,这是 Django 中最简单的视图。如果想要看见效果,还需要配置 URL 映射----需要 URLconf 。

  在 polls 目录下新建一个 urls.py 文件。 最新的目录结构应该是这样:

polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py

  在映射的 URL 文件中 polls/urls.py ,输入以下信息:

from django.urls import path

from . import views

urlpatterns = [
path('', views.index, name='index'),
]

  这里定义了应用的 URLconf  ,因此需要在项目的 URLconf 指定 应用的 URLconf .修改项目跟目录下的文件

mysite/urls.py ,在文件的urlpatterns 列表插入一个include(),修改完毕如下:

from django.contrib import admin
from django.urls import include, path urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]

  函数 include() 允许引用其他的 URLconfs 。每当 Django 遇到 include() 的时候,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。

设计者设计 include() 的理念是使其可以即插即用。当包括其它 URL 模式时你应该总是使用 include() , admin.site.urls 是唯一例外。

  在启动之前,注意。一定要把视图给创建好,不然会报一下错误: 视图找不到属性 index

  File "E:\work\py_dj\mysite\polls\urls.py", line 19, in <module>
path('', views.index, name='index'),
AttributeError: module 'polls.views' has no attribute 'index'

  页面404 的注意看看,访问页面的时候要注意是不是加上应用名:http://127.0.0.1:8000/polls/

  函数 path() 具有四个参数,两个必须参数:route 和 view,两个可选参数:kwargs 和 name。现在,是时候来研究这些参数的含义了。

  path() 参数: route

  route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。

这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/

  path() 参数: view

  当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。稍后,我们会给出一个例子。

  path() 参数: kwargs

  任意个关键字参数可以作为一个字典传递给目标视图函数。本教程中不会使用这一特性。

  path() 参数: name

  为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。

  

Django 初试水(一)的更多相关文章

  1. Django 初试水(二)

    这部分链接上一部分.将建立数据库,创建第一个模型,并主要关注 Django 提供的自动生成的管理页面. 打开 mysite/setting.py 文件.这包含了 Django 项目设置的 Python ...

  2. Django 初试水(三)

    在前面的一和二中,分别实现了一些基础的操作,数据库和 Django 自带的管理界面,接下来,主要是创建我们自己的界面(视图). 访问一个地址,对应的服务器直接返回一个视图.这是最常见的交互. 就好比访 ...

  3. django 初试

    /************************************************************************************** * django 初试 ...

  4. Ubuntu Nginx uwsgi django 初试

    /************************************************************************************** * Ubuntu Ngi ...

  5. .NET web开发之WebApi初试水

    前几天看了.NET的EF(Entity Framework),发现居然有这么先进的东西,只要操作几个类就可以完成数据库的增删查改,而且可以用数据库直接导出类(DB First).也可以用类来生成数据库 ...

  6. 菜鸟初试水--JQuery基础

    此文仅作入门级文章,望大神们高抬贵手! JQuery: 它是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作. JQuery的用途: ①访问和操作DOM元素: 使用j ...

  7. scrapy初试水 day03(递归调用)

    import scrapyfrom scrapy.http import Requestfrom scrapy.spider import Rulefrom scrapy.linkextractors ...

  8. scrapy初试水 day02(正则提取)

    1.处理方式 法一 通过HtmlXPathSelectorimport scrapyfrom scrapy.selector import HtmlXPathSelectorclass DmozSpi ...

  9. scrapy初试水 day01

    1.安装pip install Scrapy#一定要以管理员身份运行dos窗口conda install scrapy2.创建项目scrapy startproject hello3.在hello/s ...

随机推荐

  1. Mybaits(9)MyBatis级联-2

    一.鉴别器和一对多级联 1.完善体检表,分为男雇员体检和女雇员体检表 (1)持久层dao编写 package com.xhbjava.dao; import com.xhbjava.domain.Ma ...

  2. Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set…

    php打印小票错误提示:Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activate ...

  3. es5和es6中如何处理不确定参数

    场景:求出不定参数的总数和 //利用arguments function sum () { let num = 0 //Array.prototype.forEach.call(arguments,f ...

  4. Umi 小白纪实(二)—— model 的注册与使用

    Umi 通常会搭配 Dva 使用,用于管理页面状态和逻辑 一.注册 model 首先需要在 .umirc.js 中启用 dva 插件 export default { plugins: [ ['umi ...

  5. 【Android】LitePal的基础

    一.环境配置 LitePal 在GitHub地址为:https://github.com/LitePalFramework/LitePal 我们使用起来也很方便,直接在gradle中配置即可. 如果你 ...

  6. centos7 升级sqlite3

    升级sqlite3 官网 点击 1.下载源码 wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz 2.解压,编译 .tar. ...

  7. JavaDay11

    Java learning_Day11 本人学习视频用的是马士兵的,也在这里献上 <链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA> ...

  8. 解决const char* to char* 的错误

    一般情况下 char* string = "abc"; 编译后会出现标题中的错误. 我们只需要在字符串前加上const_cast<char*>即可,这个作用是丢弃变量的 ...

  9. Python-Django学习笔记(四)-views的编写以及urls分发器的配置

    MTV中的V表示的是Views,视图函数(或简称视图)只是一个Python函数,它接受Web请求并返回Web响应. 通俗的理解可以理解为后端控制器. (响应可以是网页的HTML内容,重定向,404错误 ...

  10. PHP Files functions

    simple functions <?php $docRoot = $_SERVER['DOCUMENT_ROOT']; //readfile($docRoot."/orders/or ...