爬呀爬Xjm 阅读(30) 评论(0)

查看版本:

python -m django --version

创建第一个项目

从cmd命令行cd到想要存储代码的目录,:

D:\学习历程\django学习>django-admin startproject mysite

注意:项目名避免使用django或test(与python冲突)的名称。

startproject创建的内容:

说明:

  • 最外面的mysite根目录只是你项目的容器。它的名字与django无关,可以随意你喜欢的名字
  • manage.py:一个命令行实用程序。可以以各种方式与项目进行交互
  • 里面的mysite是你的项目的实际python包。它的名字是你需要用来导入任何内容的Python包名(例如mysite.urls
  • __init__py:一个空文件,告诉python这个目录应该被视为一个python包
  • settings.py:项目的设置和配置。
  • urls.py:URL声明。django支持的网站目录。
  • wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点

开发服务器

cd 到项目目录mysite下:

cd mysite
python manage.py runserver

 

你将看到上图输出。

 此时此刻,服务器正在运行,请使用web浏览器访问http://127.0.0.1:8000/。

 

说明:

默认情况下,runserver命令在内部的IP端口8000上启动开发服务器。可以更改:python manage.py runserver 8080

如果你想更改服务器的IP,传递的时候和端口一起传递。python manage.py runserver 0:8000。是最快捷的方式。

开发服务器会根据每个请求重新加载python代码,无需重新启动。添加文件不会自动出发重新启动,所以要手动重新启动。

创建投票应用程序

项目与应用程序有什么区别?

应用程序是一种web应用程序,它可以执行某些操作,例如web blog系统,公共记录数据库或简单的轮询应用程序。

项目是特定网站的配置和应用程序的集合。项目可以包含多个应用程序。一个程序可以在多个项目中。

D:\学习历程\django学习\mysite>python manage.py startapp polls

目录结构:四个箭头代表四个文件处于相同路径下

编写你的第一个视图

打开文件polls/views.py编写代码

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    return HttpResponse("Hello,world. You're at the polls index")

这个是Django中最简单的视图。要调用视图,需要将它映射到一个url中。我们需要在polls目录下创建urlconf,名为urls.py。

在urls.py文件中,编写代码:

from django.conf.urls import url
from . import views

urlpatterns=[
    url(r'^$',views.index,name='index'),
]

下一步是将url指向polls.urls模块。在mysite/urls.py修改代码:

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^polls/',include('polls.urls')),
]

说明:include()函数允许引用其他urlconf。

现在已经将index视图连接到urlconf。验证它的工作:

python manage.py runserver

你可以看到:

URL()参数:regex

将请求的URL与每个正则表达式进行毕竟,直到找到匹配的正则。

正则不搜索GET和POST参数或域名。

例如:

  https://www.examlpe.com/myapp/。

  https://www.example.com/myapp/?page=3

都是查找myapp/

URL()参数:view

当django发现正则表达式匹配时,调用指定的视图函数,将httpRequests对象作为第一个参数。

如果正则表达式使用简单的捕获,则将值作为位置参数传递; 如果它使用命名捕获,则将值作为关键字参数传递。