Django基础介绍

*添加了中文注释,需要在文件头部添加 # -*- coding: UTF-8 -*-。*

日期格式默认值不能设置为空,不然数据格式会有问题。

pip list可查看安装的所有软件

djang安装步骤简单介绍:
1)先创建一个文件夹来存放所有的虚拟环境
2)进入该文件夹执行:virtualenv django1 -p python3.6 创建虚拟环境
3)激活虚拟环境:source django1/bin/activate
4)在虚拟环境下安装django:pip install django==1.11(1.11表示安装指定版本)
上述步骤完成之后可以在其他任何地方创建django项目,不过创建项目时需要先激活django环境
创建项目:django-admin startproject +项目名称(创建项目不一定要进入虚拟环境,可直接在终端执行前面的命令)

项目里面所包含的文件:

  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。相当于是django的项目管理器
  • __init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  • settings.py: 该 Django 项目的设置/配置。
  • urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。就是url配置
  • wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。(全程是:Web Server Gateway Interface 服务器网关接口,python应用与WEB服务器之间的接口)

创建app:django-admin startapp +应用名称  (创建好之后需要将应用添加到setting.py中的INSTALLED_APPS里面,这里需要注意的是:创建的应用名称不能和python的模块名称一样,否则会报错创建失败)

应用里面包含的文件:

migrations:数据移植(迁移)模块,内容自动生成

admin.py:该应用的后台管理系统配置

apps.py:当前应用的一些配置

models.py:数据模型模块,使用ORM框架,类似于MVC结构中的models

tests.py:自动化测试模块,django提供了自动化测试功能

views.py:执行响应的代码所在模块,代码逻辑处理的主要地点,项目中大部分代码均在这里编写

创建第一个响应(即HTTPResponse的服务器响应内容):

第二种URL配置方式(包含其他URL):

1)在根urls.py文件中引入include

2)在APP应用目录下创建一个urls.py文件,格式与根urls.py相同

3)根urls.py中url函数第二个参数改为include('blog.urls')  blog为APP应用名

注意事项:根urls.py针对APP应用配置的URL名称,是该APP应用URL的总路径;配置时URL注意正则表达式结尾符号$和/

一、Templates介绍

步骤:

1)在APP应用目录下创建名叫templates的目录

2)在该templates目录下创建HTML文件

3)在view.py中返回render();render()有三个参数,前两个是必须的,render()函数将请求对象作为它的第一个参数,模板的名字作为它的第二个参数,一个字典作为它可选的第三个参数。 它返回一个HttpResponse对象,含有用给定的context 渲染后的模板。例:return render(request,'index.html')

DTL(Django templates language)模板语言,刚才说的第三个参数支持一个dict()类型,该字典是后台传递到模板的参数,键为参数名,在模板中使用{{}}来直接使用;例:return render(request,'index.html',{'hello':'hello,Blog!'})

Django查找templates:

1)Django按照INSTALLED_APPS中的添加顺序查找templates

2)不同APP应用下templates目录中同名.html文件会造成冲突;解决冲突方案:在APP应用的templates目录下创建以APP应用名为名称的目录,将html文件放入新创建的目录下;然后分别配置好各APP下urls.py和views.py文件及根目录下的urls.py文件

 

二、Models介绍;Django中的Models是什么?

Field字段介绍:

models.ForeignKey  字段外键类型

models.DateTimeField 字段时间类型

models.IntegerField 字段数值整型

models.IPAdresssField IP地址类型

models.FileField  上传文件时用到的字段类型

通常,一个Models对应数据库的一张数据表,Django中Models以类的形式表现,它包含了一些基本字段以及数据的一些行为

ORM:对象关系映射(Object Relation Mapping),实现了对象和数据库之间的映射,隐藏了数据访问的细节,不需要编写SQL语句

步骤:创建models.py文件(创建APP时系统已经自动创建),并引入models模块,创建类,继承models.Model,该类即是一张数据表,在类中创建字段

字段创建:字段即类里面的属性(变量),比如变量attr = models.CharField(max_lenth=200,verbose_name= '文章名称');(verbose_name可以看成是对字段的注释)

接下来生成数据表:1、先进入manage.py同级目录中;2、执行python manage.py makemigrations app(可选);3、再执行python manage.py migrate

上面步骤生成数据表之后:django会自动在对应app/migrations目录下生成移植文件/迁移文件,执行python manage.py sqlmigrate +应用名 +文件id(文件id就是migrations目录下的文件数字编号或者写文件的全称也行) 查看SQL语句

例:E:\myblog>python manage.py sqlmigrate blog 0001
默认sqlite3的数据库在项目根目录下db.sqlite3,可以使用第三方软件去打开该数据库,比如navicat

后台页面呈现数据:

1、对应app的views.py中import models   例句:article = models.Article.objects.get(id=1) (id表示主键,也可以使用其他非主键);2、render(request, page, {'article':article}) (page就是该应用下的html文档)

前端步骤:

模板可直接使用对象以及对象的“.”操作,article.后面的内容就是前面创建类时设置的字段

 

三、Admin简介-什么是admin?

Admin是django自带的一个功能强大的自动化数据管理界面;被授权的用户可直接在admin中管理数据库;django提供了许多针对的定制功能

1、创建用户:python manage.py createsuperuser  创建超级用户

2、创建好用户之后开启runserver服务,然后执行127.0.0.1:8000/admin  可进入账户登录界面;页面一般显示是英文,可修改setting.py文件中LANGUAGE_CODE='zh_Hans',(‘zh-hans’,'zh_hans',‘zh-Hans’都可以)即可显示为中文。LANGUAGE_CODE='en-us'代表是英文

admin应用配置:

在应用下admin.py中引入自身的models模块(或里面的模型类),然后编辑admin.py:admin.site.register(models.Article)

上面编辑操作完成后,刷新前面在浏览器登录的后台就能看见站点管理,以及里面包含得有我们创建的django应用APP和APP下面的模型类(models.py里面的类),这些东西就是我们的数据了。如何修改数据呢,请看下面图:

我们点击Article超链进去添加一条条数据,显示的目录都是一样的名字,这是python默认的实例对象,这样无法区别哪个才是我们想要的,那么如何修改这个默认名称呢,请看下面:

 1、在models.py中的Article类里面添加一个方法,python3版本选择添加__str__(self)方法,然后return self.title;这样之后在到浏览器中去查看,目录的名称就分别显示为我们添加数据时手动写的标题了。

admin增强内容:(除了显示标题外,还显示其他字段信息)

list_display括号里面的字段必须是models.py里面的类里面的字段名,且需要是字符串。

admin过滤器:

关于admin后台的操作的代码编写基本都是在admin.py文件中去写入。

上面的几个截图代码演示:

from django.contrib import admin
from blog.models import Article

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'content',)
    list_filter = ('pub_time')  # 过滤器
admin.site.register(Article)   # 就是将模型类注册进去

四、一个简单博客页面设计

一般博客页面概要包含:1.博客主页面(首页);2、博客文章内容;3、博客撰写页面(写博客)

1.博客主页面包含:文章标题列表(加超链接);发表博客按钮(超链接点击),这个列表的编写思路如下:

取出数据库中所有文章对象>将文章对象们打包成列表(实际是使用all()函数获取所有数据,得到是一个python的集合,这里说的打包列表非python的list里面。all()函数见下图),传递到前端>前端页面把文章以标题超链接的形式逐个列出。

操作步骤:

就是先再该应用APP下的views.py文件中修改函数获取数据库中所有信息,然后传递到前端(即return到templates模板中的html文件里)。

到这里就完成了博客主页面的开发

2、一篇博客文章内容包含:标题;文章内容;修改文章按钮(超链接形式点击)操作思路及步骤可以如下:

在views.py中再创建一个响应函数,并引入配置到urls.py中,还要创建一个html文档;这里需要注意的是:创建的响应函数中有个参数是文章的主键id(这个id在浏览器中我们写入到URL后面就能跳转到指定文章页面),URL参数传递;参数在views.py中响应函数request后,可以有默认值,URL正则表达式:r'^article_page/(?P<article_id>[0-9]+)/$';URL正则中的组名(即article_id)必须和响应函数中的参数名一致。

1)Django模板中超链配置,如下图介绍:

3、博客撰写页面(写博客),包含:标题编辑栏;文章内容编辑区域;提交按钮(举例:就如现在写的这个博客方式)

 其实步骤和前面那些都是一样的,先再views.py中创建响应函数,并引入到urls.py中,同时渲染到新建的模板html里面。

实际就是提交一个form表单数据,这里就学习到了Django中的form表单。(注释:所有的form表单提交都需要加:{% csrf_token %}防护机制);另外也可以通过编写views.py文件,直接默认给数据表添加信息:

如何将网页输入的数据添加入数据库(有两种方式):

第一种,此方式没添加一条会覆盖前面的数据,不好用

第二种添加数据的方式,每写一条就会增加一条,不会覆盖前面的数据:

if request.method == 'POST':
    name = request.POST.get('name', '')        # 获取从网页输入的name
    email = request.POST.get('email', '')      # 获取从网页输入的email
    address = request.POST.get('address', '')  # 获取从网页输入的address
    message = request.POST.get('message', '')  # 获取从网页输入的message
    UserMessage.objects.create(name=name, email=email,address=address, message=message, object_id='1')
return render(request, 'new_form.html')

上面演示了如何添加数据记录,那么删除某数据怎么操作呢?情况下面截图:

  • 单表操作

    表记录的增

    models.Publisher.objects.create(name="沙河出版社")

    表记录的改

    方式一:
    b=Book.objects.get(author="oldboy")
    b.price=120
    b.save()
                
    方式二:
    #update是QuerySet
    Book.objects.filter(author="yuan").update(price=999)
    表记录的查(重点):
    book_list = Book.objects.filter(id=2)
    book_list=Book.objects.exclude(author="yuan").values("name","price")
                    
    book_list=Book.objects.all()
    book_list = Book.objects.all()[::2]
    book_list = Book.objects.all()[::-1]
                    
    #first,last,get取到的是一个实例对象,并非一个QuerySet的集合对象
    book_list = Book.objects.first()
    book_list = Book.objects.last()  
    book_list = Book.objects.get(id=2)#只能取出一条记录时才不报错
                    
    ret1=Book.objects.filter(author="oldboy").values("name")
    ret2=Book.objects.filter(author="yuan").values_list("name","price")
                    
    book_list= Book.objects.all().values("name").distinct()
    book_count= Book.objects.all().values("name").distinct().count()
    
    表记录的删

    models.Publisher.object.get(id=1).delete()

    Book.objects.filter(author="oldboy").delete()

  • 模糊查询  双下划线__

    book_list=Book.objects.filter(name__icontains="P").values_list("name","price")
    book_list=Book.objects.filter(id__gt=5).values_list("name","price")

 

安装virtualenv:pip install virtualenv   (virtualenv作用)
pip install workon
pip install virtualenvwrapper-win(安装这个之后才能使用workon命令)
>mkvirtualenv +自定义目录名称:创建虚拟环境,位置统一在C盘C:\Users\Administrator\Envs下面
workon可以查看有哪些虚拟环境
workon+虚拟环境目录名称:即可进入指定django虚拟环境

安装django指定版本:pip install Django==1.11
windows查看django版本命令:python -m django --version
安装django两种方式:
1)pip install django==1.11
2)源码安装,下载源码,然后执行:python setup.py install


用pycharm创建Django项目:打开pycharm>点击file>选择new project>选择Django>然后再Location 设置Django项目名称,下面选择django环境。创建完成之后执行下面操作(安装MySQL-Python驱动,因为我们会使用django连接mysql):pip install mysql-python,若报错,需下载支持python3的驱动文件,看下面:
Python3.6安装MySQL-Python驱动方式:1.到https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python下载对应文件  (Mysqlclient中查询),2.pip install mysqlclient-1.4.2-cp36-cp36m-win_amd64.whl安装

django数据库配置:DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testdjango',
        'USER': 'root',
        'PASSWORD': 'yi15181710927',
        'HOST': '127.0.0.1',
    }
}
TEMPLATES配置:TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]

静态文件配置:STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

create 创建的用户密码不加密  应该用create_user
from django.contrib.auth import get_user_model   User = get_user_model()使用这种特殊方法调用用户model
ctrl+r html一键替换

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')   创建midia目录 需要配置查找路径
MEDIA_URL = '/media/'

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值