美文网首页
Djiango学习

Djiango学习

作者: 蒲小帅丶 | 来源:发表于2018-08-21 16:19 被阅读0次
本文根据慕课网Djiango学习视频学习。

前言:发现学习的东西,一段时间没有用,就又忘记了,迷迷糊糊的。不行的写下来,做个记录。
该文很大部分参考了慕课网django的学习视频。

项目创建开发流程

在相关环境搭建好之后,使用pycharm新建项目。方便快捷。

1.创建虚拟环境

目的就是每个项目的使用的包分开,如果不用虚拟环境,每个项目的三方包都安装在同一个环境下,增大体积

1.安装 virtualenv
image.png
2.在指定的目录创建虚拟文件目录
image.png
3.进入创建的目录下的Scripts执行activete.bat
image.png

进入虚拟环境。pip list 查看安装的库


image.png

退出执行 deactivate.bat
用pychorm创建项目的时候,就选择这个环境

2.创建项目,并观察目录
django-admin startproject myblog

创建项目.以下是初始化的项目结构。


image.png

WSGI: Python服务器网管接口(不修改)
URLS:配置URL
Setting:(核心部分)

3.1创建App应用

在pycharm中,也能生成app>tooks>


image.png

输入 命令 startapp “名字” 就能生成app模块

或者打开命令行,进入项目manage.py同一级目录。输入 python manage.py startapp blog,添加应用名 到setting.py 中的INSTALLED_APPS里面 image.png
一些细节注意
创建static 目录用于存放静态html文件
。需要在setting中设置引用静态文件的配置
STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
创建log目录用于存放log日志
因为涉及到存放文件  所以创建 media目录。
重点:
后面可能有多个app,所以创建apps目录,把app名字拖入.会自动创建init.py
把app名字  mark成sorcuess.。在setting  设置  才能识别sys.path.insert(0, os.path.join(BASE_DIR, "apps"))
应用目录 image.png

migrations 数据迁移模块
admin.py 后台管理系统配置
apps.py 当前应用的一些配置。没什么意思
models.py 数据模块 (ORM)
test.py 自动化测试,测试脚本
views.py 执行响应的逻辑代码(重要)

3.3修改端口号
python manage.py runserver 9090 image.png
3,3.开启服务:
CMD窗口下该目录下 python manage.py runserver image.png

此时可以在浏览器打开改地址。显示正确就说明成功了。
==================
创建第一个界面:
UR分发,都要传递一个request对象,
在views.py中编辑

from  django.http import HttpResponse
def index(request):
    return HttpResponse("Hello world").
Urls配置的优化,由于项目越来越大。在blog 应用中创建urls 配置url后缀 image.png
提示,新版的django,在url中不用r这些正则
image.png

如果存在多个app了,可以在每个app下设置urls,并使用include来()导入


image.png
这样子整个请求地址为 image.png
3.3模板的创建,什么是template

HTML文件,模板语言 DTL

3.4创建模板

1.在APP 的根目录下,即blog下创建 templates的目录
在该目录下创建HTML代码,index.html文件
在views.py中返回一个render()
render(reuest,"*.html",字典)
该字典是后台传递到模板的参数,键为参数名

在模板中使用{{参数名}}来直接使用 image.png
def login(request):
    return render(request, 'index.html', {"hello": "我是蒲小帅"})
在index.html中获取
<h1>{{hello}}</h1>就能获取到我是蒲小帅
****注意
Django按照InSTALLED_APPS的添加顺序查找Templates,不同APP下Templates目录下的同名.html会造成冲突

解决方法:
在templates目录下创建于app目录相同的文件夹,并将html文件放在其中。

3.5models介绍

在生成app应用目录时,自动为我们创建了models.py,并引入models

创建类,继承models.Model。Python中数据表都是以类的形式产生。在APP目录下的models.py里创建一个文章类,用于生成数据表。 image.png
有了model,把其生成为数据表
3.6生成数据表
1.python manage.py makemigrations app(名) 可选,不写的话,该应用所有的都生成数据迁移。 image.png
2.python manage.py migrate image.png
3.查看sql的语句 python manage.py sqlmigrate blog 0001 image.png
关联MySql数据库

在setting.py中修改,前提是已经创建了数据库

image.png
过程中提示没有数据库驱动,就要到虚拟环境中安装。
image.png
mysqlclient下载 mysqlclient-1.3.10-cp34-cp34m-win_amd64.whl。放到 虚拟环境录下。用pip install 解压他。
然后在客户端,使用。
生成默认数据表 image.png
在app下的model中创建类来操作数据字段。
比如: image.png
然后mannager.py 先执行 makemigrations messages,在执行 makemigrations message这是app名字。
migrate message进行查看过程。在navatat中可以看到默认创建djiaogo_message的表,以及字段
image.png
常用数据类型

models.ForeignKey
models.DateField
models.IntegerField
models.IPAddressField
models.FileField
models.ImageField


image.png
image.png
创建超级账户

createsuperuser


image.png
xadmin

比admin界面更友好
推荐github上下载源码,使用django2分支,解压复制xadmin目录到app同级目录下。可能有相关内容没导入,用pycharm自行导入解压。
在setting.py中添加

INSTALLED_APPS = [
    # 'django.contrib.admin',
    'xadmin',
    'crispy_forms',注意这里有个逗号
]
导入 xadmin
,url中设置xamin

xadmin安装

image.png
xadmin一些配置

1.配置主题,在user.admin中设置

class BaseSeting(object):
    enable_themes=True
    use_bootswatch=True
xadmin.site.register(views.BaseAdminView,BaseSeting)
必写在最后注册不能写在第一位。不然估计初始化错误。
class GlobalSettings(object):
    site_title="后台管理系统"  #左上角文字
    site_footer="@蒲小帅"#下方文字
    menu_style="accordion" #设置菜单为收缩
xadmin.site.register(views.CommAdminView,GlobalSettings)

设置菜单显示为中文,也就是app下面的文字
1.在相应的app(operation)的app.py下添加 verbose_name="用户操作"
2.2,在init下写 default_app_config="operation.apps.OperationConfig"
前端uiSemantic-UI

继续学习

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

urls中参数传递,

def hello(request,name):
    name="你好,%s" %name
    return HttpResponse(name)\
...
path('hello/<name>',views.hello)
image.png

带?/?name就需要用get

def hi(request):
    name=request.GET.get("name")
    return HttpResponse("你好,"+name)
...
path('hi/',views.hi)
image.png

url命名,反转url

image.png

比如 在redirect('/cms/'),需要改变的时候,需要改很多地方,那么我们就给他取个名字,就算地址变了,名字没变。

第一步:path('hi/',views.hi,name="login")
第二步: from  django.shortcuts import redirect,reverse
redirect(reverse('login'))
命名空间

cms,front中的urls的path的名称name都一样,重复了,那么在views中就不知道找谁。在多个app之间,可能产生同名的url,反转就会混淆

在各自的urls中,指定
app_name='front'
....
反转的地方
reverse('front.login')

模板引擎

falsk jinjia2 django DTL模板引擎
两种渲染方式:

1.render_to_string
def index(request):
    html=render_to_string('index.html')
    return HttpResponse(html)
2.render
 return render(request,'index.html')

模板路径设置

‘DIRS’,查找路径,是个列表可设置多个,
‘APP_DIRS’=true,如果在DIRS下没找到,优先在当前app中寻找,找不到会在安装了的app中看有没有teamplates。(INSTALLED_APPS下,添加‘app’)

模板变量,语法,if,for

DTL常用过滤

add 把数据转成int,在跟value进行相加
{{value|add:"2"}}
flask  {{ url_for('xxx',xxx='')}}
cut
{{value | cut :" "}} 剪掉空格

相当于 replace(args,"")

date
{{birthday |  date:''Y/m/d"}}
2018/12/27

模板继承

{% extends 'xxx'%}
{% block body%}
{% endblock%}
跟flask一样
{{block.super}}继承父模板
{% url 'xxx'%}

加载静态文件

image.png
 'builtins':['django.templatetags.static']
#不与app下的static相关
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static')
]

相关文章

  • Djiango学习

    本文根据慕课网Djiango学习视频学习。 前言:发现学习的东西,一段时间没有用,就又忘记了,迷迷糊糊的。不行的写...

  • Djiango

    Django是一个用 Python 编写的 Web 框架。Web 框架是一种软件,基于web框架可以开发动态网站,...

  • Djiango

    Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。 1.Dj...

  • .........

    Djiango:-python版本3.4-使用virtualenv实现多个互不干扰的开发环境一:安装python3...

  • Django 创建项目,关联mysql

    pip安装djiango 创建django项目 创建应用-切到带有 manage.py 的目录 注册项目在test...

  • Djiango(二) 创建视图

    修改时间: 2016-12-06 修改次数: 1 假设目录结构如下: 在blog views.py中创建 修改ur...

  • Django导入静态文件

    引言 这个问题出在以Djiango做后台的前端界面上。按以往的习惯,css,js,image等静态文件直接在前端h...

  • django---基础入门

    Djiango特点 : ①强大的数据库功能用 python 的类继承,几行代码就可以拥有一个丰富,动态的数据库操作...

  • djiango系列之_项目与App

    基本命令 一. 创建一个项目 用命令创建mysite_Django 用PyCharm创建mysite_Django...

  • Django框架的应用-ubuntu使用方法-前篇

    在使用Djiango框架前我们需要用虚拟环境来应用(虚拟环境的安装我就不写了百度都能找到),在创建的虚拟环境中安装...

网友评论

      本文标题:Djiango学习

      本文链接:https://www.haomeiwen.com/subject/fmpzvxtx.html