当前位置: 首页 > news >正文

Django初始配置及大概扫阅

 

一、Django 简介

  Django 是一个由 Python 写成的开放源代码的 Web 应用框架。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统)软件。并于2005年7月在 BSD 许可证下发布。这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt 来命名的。由于 Django 的是在一个快节奏的新闻编辑室环境下开发的,它的目的是使常见的 Web 开发任务,快速和容易。

 

MTV 模式

Django 采用了 MTV 设计模式

上述图大概是说:

  1. URL ( urls.py )请求调度,当有缓存页面的时候直接返回内容。
  2. 视图函数( view.py )执行所请求的操作,通常包括读写数据库。
  3. 模型( models.py )定义了 Python 中的数据并与之交互。通常包含在一个关系数据库( MySQL、PostgreSQL SQLite 等),其他数据存储是可能的( XML、文本文件、LDAP、等)。
  4. 请求执行任务后,视图返回一个 HTTP 响应对象(通常是经过数据处理的一个模板)。可选的:视图可以保存一个版本的 HTTP 响应对象,返回携带一个时间戳,来告诉浏览器这个视图的更新时间。
  5. 模板通常返回 HTML 页面。Django 模板语言提供了 HTML 的语法及逻辑。

 


安装:
pip3 install django


C:\......\Python35\Scripts

二、基本配置

1、常用命令

# 查看django版本
$ python -m django --version

# 创建项目,名为mysite
$ django-admin startproject mysite

# 启动django
$ python manage.py runserver
$ python manage.py runserver 8080
$ python manage.py runserver 0.0.0.0:8000

# 创建应用程序,确保和 manage.py 是同一目录
$ python manage.py startapp polls

# 运行创造模型变化迁移
$ python manage.py makemigrations

# 运行应用模型变化到数据库
$ python manage.py migrate

# admin创建管理员用户
$ python manage.py createsuperuser

注:自动重新加载 runserver,根据需要开发服务器自动重新加载Python代码为每个请求。您不需要重新启动服务器代码更改生效。然而,像添加文件某些操作不触发重新启动,所以你必须重新启动在这些情况下的服务器。

基本目录结构及作用:

mysite/              # 项目的容器,名字随便起
    manage.py        # 命令行实用工具,以各种方式与该Django项目进行交互
    mysite/          # 实际的Python项目
        __init__.py  # 空文件,导入不出错
        settings.py  # 这个Django项目配置
        urls.py      # 这个Django项目的URL声明; 一个Django驱动网站的“目录”
        wsgi.py      # 一个入口点为WSGI兼容的Web服务器,以满足您的项目

Django

pip3 install django


C:\Python35\Scripts

# 创建Django工程
django-admin startproject 【工程名称】

mysite
- mysite # 对整个程序进行配置
- init
- settings # 配置文件
- url # URL对应关系
- wsgi # 遵循WSIG规范,uwsgi + nginx
- manage.py # 管理Django程序:
- python manage.py
- python manage.py startapp xx
- python manage.py makemigrations
- python manage.py migrate



# 运行Django功能
python manage.py runserver 127.0.0.1:8001


chouti
  - chouti
  - 配置
  - 主站 app
  - 后台管理 app



# 创建app
  python manage.py startapp cmdb
  python manage.py startapp openstack
p  ython manage.py startapp xxoo....

app:
  migrations 数据修改表结构
  admin Django为我们提供的后台管理
  apps 配置当前app
  models ORM,写指定的类 通过命令可以创建数据库结构
  tests 单元测试
  views 业务代码

1、配置模板的路径
    
        TEMPLATES = [
                {
                    'BACKEND': 'django.template.backends.django.DjangoTemplates',
                    'DIRS': [os.path.join(BASE_DIR, 'templates')],
                    'APP_DIRS': True,
                    'OPTIONS': {
                        'context_processors': [
                            'django.template.context_processors.debug',
                            'django.template.context_processors.request',
                            'django.contrib.auth.context_processors.auth',
                            'django.contrib.messages.context_processors.messages',
                        ],
                    },
                },
            ]
    2、配置静态目录
        static
    
        STATICFILES_DIRS = (
            os.path.join(BASE_DIR, 'static'),
        )

        
        <link rel="stylesheet" href="/static/commons.css" />

内容整理
1. 创建Django工程
django-admin startproject 工程名

2. 创建APP
cd 工程名
python manage.py startapp cmdb

3、静态文件
project.settings.py

STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

4、模板路径

DIRS ==> [os.path.join(BASE_DIR,'templates'),]

5、settings中

middlerware

# 注释 csrf


6、定义路由规则
url.py

"login" --> 函数名

7、定义视图函数

app下views.py

def func(request):
# request.method GET / POST

# http://127.0.0.1:8009/home?nid=123&name=alex
# request.GET.get('',None) # 获取请求发来的而数据

# request.POST.get('',None)


# return HttpResponse("字符串")
# return render(request, "HTML模板的路径")
# return redirect('/只能填URL')

8、模板渲染
特殊的模板语言

-- {{ 变量名 }}

def func(request):
return render(request, "index.html", {'current_user': "alex"})


index.html

<html>
..
<body>
<div>{{current_user}}</div>
</body>

</html>

====> 最后生成的字符串

<html>
..
<body>
<div>alex</div>
</body>

</html>
-- For循环
def func(request):
return render(request, "index.html", {'current_user': "alex", 'user_list': ['alex','eric']})


index.html

<html>
..
<body>
<div>{{current_user}}</div>

<ul>
{% for row in user_list %}

{% if row == "alex" %}
<li>{{ row }}</li>
{% endif %}

{% endfor %}
</ul>

</body>

</html>

#####索引#################
def func(request):
return render(request, "index.html", {
'current_user': "alex",
'user_list': ['alex','eric'],
'user_dict': {'k1': 'v1', 'k2': 'v2'}})


index.html

<html>
..
<body>
<div>{{current_user}}</div>

<a> {{ user_list.1 }} </a>
<a> {{ user_dict.k1 }} </a>
<a> {{ user_dict.k2 }} </a>

</body>

</html>

###### 条件

def func(request):
return render(request, "index.html", {
'current_user': "alex",
"age": 18,
'user_list': ['alex','eric'],
'user_dict': {'k1': 'v1', 'k2': 'v2'}})


index.html

<html>
..
<body>
<div>{{current_user}}</div>

<a> {{ user_list.1 }} </a>
<a> {{ user_dict.k1 }} </a>
<a> {{ user_dict.k2 }} </a>

{% if age %}
<a>有年龄</a>
{% if age > 16 %}
<a>老男人</a>
{% else %}
<a>小鲜肉</a>
{% endif %}
{% else %}
<a>无年龄</a>
{% endif %}
</body>

</html>



XXOO管理:
MySQL
SQLAlchemy
主机管理(8列):
IP
端口
业务线
...

用户表:
用户名
密码

功能:
1、 登录
2、主机管理页面
- 查看所有的主机信息(4列)
- 增加主机信息(8列) ** 模态对话框
3、查看详细
url:
"detail" -> detail

def detail(reqeust):
nid = request.GET.get("nid")
v = select * from tb where id = nid
...
4、删除
del_host -> delete_host

def delete_host(request):
nid = request.POST.get('nid')
delete from tb where id = nid
return redirect('/home')


转载于:https://www.cnblogs.com/King-of-Knight/p/9221457.html

相关文章:

  • [转载]Delphi 版 everything、光速搜索代码
  • OO第四次博客作业
  • CentOS7网卡重启错误,配置IP方案
  • 真·面试题
  • 英语基础语法-时态(谓语动词的变化-一般时态/进行时态)
  • 安装mysql时出现应用程序无法正常启动(0xc000007b)、初始化失败以及密码忘记怎样重置?...
  • Java多线程(六) —— 线程并发库之并发容器
  • NEO VM原理及其实现(转载)
  • ES6的函数
  • review02
  • 5.2.12.读写接口实践
  • JAVA进程CPU使用率使用过高故障排查
  • 基础面试题
  • C++ 构造函数_初始化列表
  • 【keepalived】CentOS7.0下安装教程
  • java 多线程基础, 我觉得还是有必要看看的
  • java2019面试题北京
  • Making An Indicator With Pure CSS
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • php中curl和soap方式请求服务超时问题
  • Ruby 2.x 源代码分析:扩展 概述
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue的全局变量和全局拦截请求器
  • 聊聊redis的数据结构的应用
  • 如何用vue打造一个移动端音乐播放器
  • 线性表及其算法(java实现)
  • 想写好前端,先练好内功
  • 一份游戏开发学习路线
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #### go map 底层结构 ####
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #预处理和函数的对比以及条件编译
  • #在 README.md 中生成项目目录结构
  • (06)金属布线——为半导体注入生命的连接
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2)MFC+openGL单文档框架glFrame
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (poj1.2.1)1970(筛选法模拟)
  • (三)模仿学习-Action数据的模仿
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)ObjectiveC 深浅拷贝学习
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .Mobi域名介绍
  • .naturalWidth 和naturalHeight属性,
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net IOC框架入门之一 Unity
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • [ IO.File ] FileSystemWatcher
  • [383] 赎金信 js
  • [ACTF2020 新生赛]Include
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [BZOJ] 2044: 三维导弹拦截
  • [C puzzle book] types
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配