Django 初试水(一)
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 初试水(一)的更多相关文章
- Django 初试水(二)
这部分链接上一部分.将建立数据库,创建第一个模型,并主要关注 Django 提供的自动生成的管理页面. 打开 mysite/setting.py 文件.这包含了 Django 项目设置的 Python ...
- Django 初试水(三)
在前面的一和二中,分别实现了一些基础的操作,数据库和 Django 自带的管理界面,接下来,主要是创建我们自己的界面(视图). 访问一个地址,对应的服务器直接返回一个视图.这是最常见的交互. 就好比访 ...
- django 初试
/************************************************************************************** * django 初试 ...
- Ubuntu Nginx uwsgi django 初试
/************************************************************************************** * Ubuntu Ngi ...
- .NET web开发之WebApi初试水
前几天看了.NET的EF(Entity Framework),发现居然有这么先进的东西,只要操作几个类就可以完成数据库的增删查改,而且可以用数据库直接导出类(DB First).也可以用类来生成数据库 ...
- 菜鸟初试水--JQuery基础
此文仅作入门级文章,望大神们高抬贵手! JQuery: 它是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作. JQuery的用途: ①访问和操作DOM元素: 使用j ...
- scrapy初试水 day03(递归调用)
import scrapyfrom scrapy.http import Requestfrom scrapy.spider import Rulefrom scrapy.linkextractors ...
- scrapy初试水 day02(正则提取)
1.处理方式 法一 通过HtmlXPathSelectorimport scrapyfrom scrapy.selector import HtmlXPathSelectorclass DmozSpi ...
- scrapy初试水 day01
1.安装pip install Scrapy#一定要以管理员身份运行dos窗口conda install scrapy2.创建项目scrapy startproject hello3.在hello/s ...
随机推荐
- 数据库 left()、length()函数
数据库 left().length()函数 1.Mysql的length()函数: length()函数主要用于计算字符串的长度,用法也很简单:length(要计算的字符串) 就可以计算出字符串的长度 ...
- 吴裕雄--天生自然 R语言开发学习:R语言的安装与配置
下载R语言和开发工具RStudio安装包 先安装R
- C#中类的编程规范
C#中类的编程规范,或许这是一个好习惯. using System; using System.Collections.Generic; using System.Linq; using System ...
- python笔记09
今日内容 三元运算 函数 内容详细 三元运算(三目运算) v = 前面 if 条件 else 后面 if 条件: v = '前面' else: v = '后面' # 让用户输入值,如果值是整数,则转换 ...
- Matrix Sum HihoCoder - 1336 二维树状数组 感觉好像二维差分。
#include<cstdio> #include<cstring> using namespace std; typedef long long ll; ; ; ll c[N ...
- (C语言)学生成绩排序-期末考倒数第二题结构体数组排序
假设学生的基本信息包括学号.姓名.三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型.输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息.如果平均分相同 ...
- C语言118. 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5输出:[ [1], [1,1], [1,2,1], [1, ...
- Python静态方法、类方法、属性方法
静态方法 使用静态方法以后,相当于把下面的函数和类的关系截断了,它的作用相当于是类下面的一个独立函数,不会自动传入参数self. class people:..... @staticmethod de ...
- 洛谷P1402 酒店之王(网络流)
### 洛谷P1402 题目链接 ### 题目大意:有 n 个人, p 间房间,q 种食物.每个人喜欢一些房间,一些食物,但每间房间.每种食物只能分配给一个人.问最大可以让多少个人满足(当且仅当分配到 ...
- 最大流算法之Ford-Fulkerson算法与Edmonds–Karp算法
引子 曾经很多次看过最大流的模板,基础概念什么的也看了很多遍.也曾经用过强者同学的板子,然而却一直不会网络流.虽然曾经尝试过写,然而即使最简单的一种算法也没有写成功过,然后对着强者大神的代码一点一点的 ...