betway必威-betway必威官方网站
做最好的网站

Django框架运用,Django学习笔记

 模板的静态文件处理

这里的静态文件指的是不需要嵌入到服务器端的内容的文件,

比如:图片、css、js、html都属于静态文件

在Django中静态文件的处理,需要在settings.py中设置静态文件的访问和存储路径:

# 1、指定静态文件访问路径:
# 当访问路径是:http://localhost:8000/static/*** 一律到静态文件存储路径中搜索静态文件
STATIC_URL = '/static/'


# 2、指定静态文件存储路径:
# 在项目中的static目录中以及所有应用中的static目录中存放的都是静态文件
STATICFILES_DIRS=(BASE_DIR, 'static')

Django中访问静态文件:

<!-- 直接使用localhost:8000/static/*** -->
<img src='/static/***'>



<!-- 在模板的最顶层增加 -->
{% load static %}
<!-- 使用{% static %}访问静态文件资源  -->
<img src="{% static 'img/logo.jpg' %}">

模型和数据库

   通常来说处理数据库需要我们掌握许多复杂的SQL语句.但是在Django里,对象关系映射(ORM)帮我们处理这一切,包括通过模型创建数据库表.事实上,模型是描述你的数据模型/图表的一个Python对象.与以往通过SQL操作数据库不同,你只用使用Python对象就能操作数据库.在本章,我们将会学习如何设立数据库并为Rango建立模型.

1). 告诉 Django 你的数据库

   在你创造任何模型之前都要对你的数据库进行设置.在Django1.7,当你创建了一个项目,Django会自动在settings.py里添加一个叫做DATABASES的字典.它包含如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

2). 创建模型

   在rango/models.py里,我们定义两个继承自djnago.db.models.Model的类.这两个类分别定义目录和页面.定义Category和Page如下:

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=128,unique=True)

    def __unicode__(self):
        return self.name


class Page(models.Model):
    category = models.ForeignKey(Category)
    title = models.CharField(max_length=128)
    url = models.URLField()
    views = models.IntegerField(default=0)

    def __unicode__(self):     
        return self.title

   当你定义了一个模型,你需要制定可选参数的属性以及相关的类型列表.Django提供了许多内建字段.一些常用的如下:

  • CharField,存储字符数据的字段(例如字符串).max_length提供了最大长度.
  • URLField,和CharField一样,但是它存储资源的URL.你也可以使用max_length参数.
  • 'IntegerField',存储整数.
  • DateField,存储Python的datetime.date.

   Django也提供了连接模型/表的简单机制.这个机制封装在3个字段里,如下:

  • ForeignKey, 创建1对多关系的字段类型.
  • OneToOneField,定义一个严格的1对1关系字段类型.
  • ManyToManyFeild,当以多对多关系字段类型.

3.) 创建和迁移数据库

   我们定义了模型,那么Django就能很好的自动创建我们的数据库.

python3 manage.py migrate

   当你更改模型的时候,你需要通过makemigrations进行修改,所以对于rango,我们需要:

python3 manage.py makemigrations rango

4.) Django模型和Django Shell

   在我们把注意力集中到Django管理界面之前,通过Django shell创建Django模型也是值得一试的 - 它对我们debug非常有用.下面我们将展示如何用这种方式来创建Category实例.
   为了得到shell我们需要再一次调用Django项目根目录里的manage.py.

python3 manage.py shell

   这个实例将会创建一个Python解析器并且载入你的项目的设置.你可以和模型进行交互.下面的命令展示了这一功能.注释里可以看到每个命令的功能:

```python

django迁移无效问题解决

模板设置

模板的设置与settings.py中TEMPLATES变量(列表)相关,里面存放的字典。

BACKEND: 指定模板的搜索引擎(一般不用更改)

DIRS:指定模板的存放的目录,如果为空,Django会到应用中去搜索名为templates

  的目录,作为模板的管理目录。

  例如: DIRS = ['index.temp']   ----> 表示指定index应用的模板存放目录为temp

  ps: 这里一般都是为空,然后在每个应用中创建一个templates目录。

APP_DIRS:(布尔值)为True则表示,先从DIRS中指定的目录中查找模板,

  没有再搜templates目录

 

Django安装

使用数据库MySQL

  • 数据库安装
    安装MySQL可参考:MySQL安装
  • 数据库配置
    在项目的 settings.py 文件中找到 DATABASES 配置项
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django
        'NAME': 'test', #数据库名
        'USER': 'test',  # 数据库用户名
        'PASSWORD': 'test123', #数据库密码
        'HOST':'localhost',
        'PORT':'3306',
    }
}
  • 定义模型
    要使用模型,需要创建一个app,在项目目录下使用以下命令:
django-admin.py startapp TestModel

修改 TestModel/models.py 文件,代码如下:

# models.py
from django.db import models

class Test(models.Model):
    name = models.CharField(max_length=20)

定义name字段,数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

  • 添加模型
    在settings.py中找到INSTALLED_APPS这一项,如下:
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'TestModel',               # 添加此项
)
  • 运行迁移
$ python manage.py makemigrations TestModel  # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate TestModel   # 创建表结构
  • 测试
    进入shell命令
python manage.py shell

查找信息:

Test.objects.all()
  • 添加数据
    添加test.db文件:
# -*- coding: utf-8 -*-

from django.http import HttpResponse

from TestModel.models import Test

# 数据库操作
def testdb(request):
    test1 = Test(name='runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")
  • 修改urls.py文件:
from django.conf.urls import *
from . import view,testdb

urlpatterns = [
    url(r'^hello$', view.hello),
    url(r'^testdb$', testdb.testdb),
]

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from TestModel.models import Test

# 数据库操作
def testdb(request):
    test1 = Test(name='runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")
  • 运行
    运行命令:
python manage.py runserver 0.0.0.0:8000

打开浏览器访问:127.0.0.1:8000

模板的过滤器

过滤器主要是在显示变量的数据之前,对数据进行筛选和改变

基本语法:{{ 变量|过滤器:参数 }}

几个简单的过滤器:

<!-- 将value变为大写字符  -->
{{value|upper}}

<!-- 将value变为小写字符  -->
{{value|lower}}

<!-- 将num累加到value之后 -->
{{value|add:num}}

<!-- 将value四舍五入到n位小数 -->
{{value|floatformat:n}}

<!-- 将字符串截取到n位(包含...) -->
{{value|truncatechars:n}}

ps:具体更多的过滤器内容可以查看文档:https://docs.djangoproject.com/en/2.0/ref/templates/builtins/

 

安装Django

  • pip3 install django

部署

  • 安装:
    先安装uwsgi:
    pip install uwsgi
  • 测试
    新建文件test.py
# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
    #return ["Hello World"] # python2
  • 运行uwsgi:
uwsgi --http :8000 --wsgi-file test.py
  • uwsgi运行django
    uwsgi --http :8000 --module mysite.wsgi
  • 安装nginx
    sudo apt-get install nginx
  • 部署静态文件
    django settings中添加:
    STATIC_ROOT = 'home/renyangfar/project/static' 运行命令收集静态文件到配置的STATIC_ROOT文件中:python manage.py collectstatic`
  • 编辑配置文件/etc/nginx/sites-enabled/default

模板的标签

标签可以将服务器中的一些功能嵌入到模板中

基本语法:{%  标签内容  %}

常用的一些标签:

<!--  for 循环  
    允许使用 for 提供的内置变量 - forloop
    1、forloop.counter 
    记录当前循环的次数,从1开始
    2、forloop.first
    是否是第一次循环(第一项)
    3、forloop.last
    是否是最后一次循环(最后一项)
-->
{% for 变量 in 迭代对象 %}
    <h3>hello  hello !</h3>
{% endfor %}



<!--  if 条件  
    ps: 注意条件中and和or不能同时出现
-->
{% if 条件 %}
    <p> 满足条件,执行!</p>
{% elif 条件1 %}
    <p> 满足条件1,执行!</p>
{% else %}
    <p>不满足以上条件,执行!</p>
{% endif %}

ps:这里只是举了两个常用的例子,

具体更多的标签内容可以查看文档:https://docs.djangoproject.com/en/2.0/ref/templates/builtins/

创建你的Django项目

  • django-admin.py startproject mysite

  这个命令竟会运行django-admin.py脚本,它将会为你创建一个名叫mysite的Django新项目.这个名字随便你取的.
  在你新创建的mysite项目里自动创建了两个项目:

  • 一个和mysite同名的目录.
  • 一个叫manage.py的Python脚本

   以下为这几个脚本的用途:

  • __init__.py:这是一个空的脚本,用来告诉Python编译器这个目录是一个Python包.
  • settings.py:用来存储Django项目设置的文件.
  • urls.py:用来存储项目里的URL模式.
  • wsgi.py:用来帮助你运行开发服务,同时可以帮助部署你的生产环境.

   在项目里还有一个叫做manage.py的文件.这个文件是我们开发项目时经常使用的文件,它为我们提供了一系列的Django命令.例如,manage.py允许你运行内建的Django服务来测试和运行数据库命令.真的,这个脚本是你最常用的脚本了.

安装

pip install Django==1.11.6

如需获取最新版,见Django安装

本文由betway必威发布于编程开发,转载请注明出处:Django框架运用,Django学习笔记

TAG标签: betway必威
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。