码迷,mamicode.com
首页 > 其他好文 > 详细

Django框架1

时间:2019-03-09 01:08:04      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:决定   deb   文件中   djang   python   匹配   更改   setting   pos   

  • 创建工程可以使用命令:django-admin startproject 工程名称
  • 当然也可以使用ide直接创建一个Django工程
  • 新建的工程可以直接运行python manage.py runserver来开启
  • Django同样是MVT模式,需要模型、路由视图和模板
  • 建好工程后如要新建一个子模块应用,可以使用命令:python manage.py startapp 子应用名称
  • 同样子应用的相关文件已经自动建好,但是需要手动添加一个urls.py文件用来写入路由
  • 创建好子应用后同样应该和Flask一样注册到主模块中去,这里将子应用下的apps.py里的UserConfig添加到主模块的settings.py里的INSTALLED_APPS列表里
  • 配置好后即可开始写路由和视图函数,这里视图函数在views.py内写入,需要注意的是该框架视图函数均需传入request对象:
from django.http import HttpResponse
def index(request):
    #这里的request对象为框架自动构造,但是response则需开发者构造
    return HttpResponse("hello the world!")
  • 然后在urls.py文件内写入路由,路由文件内是一个名为urlpatterns的列表,这里和Flask不同,不使用装饰器,而是将所有路由放入一个单独的文件中:
from django.conf.urls import url
from . import views
    #这里同样需要将视图函数导入
urlpatterns = [
    #这个匹配到的路径对应该视图函数
    url(r'^index/$', views.index),
]
  • 同时这里的路由也要注册到主模块的路由中,在主模块的urls.py文件的urlpatterns列表中写入路由:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
    url(r'^admin/', admin.site.urls),  # django默认包含的
    # 添加子模块的路由,这里将包含子模块中的所有路由,所以该user模块的访问路径为协议://域名:端口/user/子模块下的具体地址,拿到url后首先匹配路径user/(这里自动忽略第一个/),匹配到后根据include找到子模块的urls,再根据子模块的路由去执行对应的视图函数,这也决定了user模块下的所有路由均以/user/开头,所以这里要访问index的完整路径为/user/index
    url(r'^user/', include('user.urls')), 
]
  • 配置文件settings.py
    • BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(_file_))) 定位当前工程的根目录
    • DEBUG
    • 语言:LANGUAGE_CODE = ‘en-us‘ 这里可以改为中国中文:LANGUAGE_CODE = ‘zh-hans‘
    • 时区:TIME_ZONE = ‘UTC‘ 这里同样可以更改:TIME_ZONE = ‘Asia/Shanghai‘
  • 请求路径及request携带参数提取:
    • 请求路径直接携带:如:http://xxxx:80/news/100 可以在路由中使用正则提取:url(r‘^news/\d{3}/$‘, views.news),此时再定义视图函数时则需要接收request对象和该匹配值,该值也可以取个名字:url(r‘^news/?P\d{3}/$‘, views.news) 将?P<名字>放在前面即可
    • 获取请求路径中的查询字符串参数,如:http://xxxx:80/news/?id=100 这里直接使用request.GET.get(‘id‘)获取
    • 获取请求体中携带的表单参数,可以使用request.POST.get(‘id‘)获取
    • 获取请求体中非表单类型参数,如json,使用request.body获取,但是返回值为byte类型,需要转换,如json: json.loads(request.body.decode()).get(id)
    • 获取请求头的各种数据:如:request.META[‘CONTENT_TYPE‘]

Django框架1

标签:决定   deb   文件中   djang   python   匹配   更改   setting   pos   

原文地址:https://www.cnblogs.com/being-a-tester/p/10498871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!