准备工作:熟悉Django命令行工具

django-admin.py 是Django的一个用于管理任务的命令行工具,常用的命令整理如下:

<1> 创建一个django工程 : django-admin.py startproject mysite

  当前目录下会生成mysite的工程,目录结构如下:

  Django:URL,Views,Template,Models

  • manage.py ----- Django项目管理工具,通过它可以调用django shell和数据库等。
  • settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
  • urls.py ----- 负责把URL模式映射到应用程序。

<2>在mysite目录下创建blog应用: python manage.py startapp blog

  目录结构如下:

  Django:URL,Views,Template,Models

<3>启动django项目:python manage.py runserver 8080

  这样我们的django就启动起来了!

<4>生成同步数据库的脚本:python manage.py makemigrations  

                     同步数据库:  python manage.py migrate   

  

   注意:在开发过程中,数据库同步误操作之后,难免会遇到后面不能同步成功的情况,解决这个问题的一个简单粗暴方法是把migrations目录下

        的脚本(除__init__.py之外)全部删掉,再把数据库删掉之后创建一个新的数据库,数据库同步操作再重新做一遍。

<5>当我们访问http://127.0.0.1:8080/admin/时,会出现:

Django:URL,Views,Template,Models

  所以我们需要为进入这个项目的后台创建超级管理员:python manage.py createsuperuser设置好用户名和密码后便可登录啦!

<6>清空数据库:python manage.py  flush

<7>查询某个命令的详细信息: django-admin.py  help  startapp

       admin 是Django 自带的一个后台数据库管理系统。

<8>启动交互界面 :python manage.py  shell

     这个命令和直接运行 python 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,对于操作数据,还有一些小测试非常方便。

<9> 终端上输入python manage.py 可以看到详细的列表,在忘记子名称的时候特别有用

一、URL(路由系统)

浏览器会自动给url后加一个“/”
django会自动给路由的正则表达式前面加一个“/”
django会给任何不带“/”结尾的url语句添加“/”(可设置)
短路路由规则:匹配到第一条就忽略后面所有!
所以路由顺序很重要!

1.普通路由

url(r'^index/',views.index),

2.正则路由

url(r'^page/\d+', views.page),

3.正则加括号

提供参数传递,按顺序接收,接收到的都是字符串

# urls.py
url(r'^page/(\d+)', views.page),

 

# views.py
def page(request, index):
page = index
return HttpResponse("page: 第%s页" % page)

4.正则加括号加指定参数名

提供指定参数传递,按参数名字进行接收,顺序可变,但参数名必须相同,接收到的都是字符串

urls.py

url(r'^page/(?P<page>\d+)/(?P<number>\d+)', views.page), 

views.py

def page(request, page, number):
p = page
n = number
return HttpResponse("page: 第%s页 第%s条" %(p, n))

5.分级路由include

在app01中新建urls文件

from django.conf.urls import include
url(r'index/', include(app01.urls)), 

二、Views(视图函数)

http请求中产生两个核心对象:

        http请求:HttpRequest对象

        http响应:HttpResponse对象

1. HttpRequest对象的属性和方法

 1 from django.shortcuts import render,HttpResponse
 2 
 3 # Create your views here.
 4 def index(request):
 5     #request.POST
 6     #request.GET
 7     #return HttpResponse("hello world!")
 8     #1.path:请求页面的全路径,不包括域名
 9     print(request.path)
10 
11     #2.get_full_path:请求页面的全路径,包括域名
12     print(request.get_full_path())
13 
14     #3.method:请求中使用的HTTP方法
15     #if req.method == "GET":
16     #   do_something()
17     #elseif req.method=="POST":
18     #   do_something_else()
19     #GET: 包含所有HTTP GET参数的类字典对象
20     # POST:包含所有HTTP POST参数的类字典对象
21     # 服务器收到空的POST请求的情况也是可能发生的,也就是说,表单form通过
22     # HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
23     #if req.POST来判断是否使用了HTTP POST方法;应该使用 if req.method=="POST"
24 
25     #4.COOKIES:包含所有cookies的标准Python字典对象;keys和values都是字串。
26 
27     #5.FILES:包含所有上传文件的类字典对象;
28     # FILES中的每一个Key都是<input type = "file" name = "" / > 标签中name属性的值,
29     # FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:
30     #     filename:上传文件名,用字符串表示
31     #     content_type:上传文件的Content Type
32     #     content:上传文件的原始内容
33     
34     #6.user:是一个django.contrib.auth.models.User对象,代表当前登陆的用户。如果访问用户当前
35     # 没有登陆,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。你可以通
36     # 过user的is_authenticated()方法来辨别用户是否登陆:
37     # if req.user.is_authenticated();
38     # 只有激活Django中的AuthenticationMiddleware时该属性才可用
39     
40     # 7.session:唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用。
Http Request对象的属性和方法

相关文章:

  • 2021-05-20
  • 2021-06-19
  • 2021-10-13
  • 2021-06-24
  • 2021-06-05
  • 2021-08-23
  • 2021-07-03
猜你喜欢
  • 2022-12-23
  • 2022-02-13
  • 2021-04-23
  • 2021-09-15
  • 2021-12-02
  • 2021-05-06
相关资源
相似解决方案