“Django”的版本间的差异

来自tomtalk
跳转至: 导航搜索
一个快捷函数: render()
Tom讨论 | 贡献
设计哲学
第72行: 第72行:
  
 
因为这样做会增加模型层和视图层的耦合性。指导 Django 设计的最重要的思想之一就是要保证松散耦合。一些受控的耦合将会被包含在 django.shortcuts 模块中。
 
因为这样做会增加模型层和视图层的耦合性。指导 Django 设计的最重要的思想之一就是要保证松散耦合。一些受控的耦合将会被包含在 django.shortcuts 模块中。
 +
 +
也有 get_list_or_404() 函数,工作原理和 get_object_or_404() 一样。

2019年6月18日 (二) 06:20的版本

安装Django

http://jingyan.baidu.com/article/466506580e7d29f549e5f8b6.html

pip install Django                  # 安装django
django-admin startproject mysite    # 生成项目
python manage.py runserver          # 运行项目
python manage.py startapp polls     # 生成运用

项目 VS 应用

项目和应用有啥区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。

urls.py

函数 path() 具有四个参数,两个必须参数:route 和 view,两个可选参数:kwargs 和 name。

解决python3下mysqldb不支持

MySQLdb 只适用于python2.x,发现pip装不上。它在py3的替代品是:import pymysql

注:windows下,django用不了。

windows安装mysqlclient

pip install wheel
pip install mysqlclient-1.4.2-cp36-cp36m-win_amd64.whl
python manage.py migrate   # 生成相应数据库表

pyhton中__pycache__文件夹的产生与作用

今天和一新来的同事沟通,说他用python编写了一个工程,但在第一次运行后,发现工程根目录下生成了一个__pycache__文件夹,里面是和py文件同名的各种以 .cpython-35.pyc 结尾的文件,问同事都不太清楚,所以便抽空整理了一下该知识点。先解释下cpython-35,cpython代表的是c语言实现的Python解释器,-35代表的是版本为3.5版。

models.py

迁移是非常强大的功能,它能让你在开发过程中持续的改变数据库结构而不需要重新删除和创建表 - 它专注于使数据库平滑升级而不会丢失数据。我们会在后面的教程中更加深入的学习这部分内容,现在,你只需要记住,改变模型需要这三步:

  1. 编辑 models.py 文件,改变模型。
  2. 运行 python manage.py makemigrations 为模型的改变生成迁移文件。
  3. 运行 python manage.py migrate 来应用数据库迁移。

创建一个管理员账号

$ python manage.py createsuperuser

一个快捷函数: render()

「载入模板,填充上下文,再返回由它生成的 HttpResponse 对象」是一个非常常用的操作流程。于是 Django 提供了一个快捷函数,我们用它来重写 index() 视图:

#polls/views.py
 
from django.shortcuts import render
from .models import Question
 
 
def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    context = {'latest_question_list': latest_question_list}
    return render(request, 'polls/index.html', context)

设计哲学

为什么我们使用辅助函数 get_object_or_404() 而不是自己捕获 ObjectDoesNotExist 异常呢?还有,为什么模型 API 不直接抛出 ObjectDoesNotExist 而是抛出 Http404 呢?

因为这样做会增加模型层和视图层的耦合性。指导 Django 设计的最重要的思想之一就是要保证松散耦合。一些受控的耦合将会被包含在 django.shortcuts 模块中。

也有 get_list_or_404() 函数,工作原理和 get_object_or_404() 一样。