跳至主要内容

django 详细介绍



网站示例

wagtail
是一个用Python编写的免费开源 内容管理系统(CMS),在使用Django框架的网站中很流行

pdf文档下载

Django使您可以更轻松地以更少的代码更快地构建更好的Web应用程序

Django软件包是Django项目中可重复使用的应用程序,网站,工具等的目录https://djangopackages.org/

https://www.djangosites.org/

•  GeoDjango: 定制的GIS Web框架 
•  Django Debug Toolbar:调试工具 
•  Django Easy Maps: 地图显示工具 
•  Django Haystack: 模块化搜索工具








To create a Django application that performs CRUD operations, follow the following steps.

1. Create a Project $ django-admin startproject crudexample
2. Create an App $ python3 manage.py startapp employee
3. Project Structure
4.Run the command to migrate the migrations.$ python3 manage.py migrate
5.Run Server To run server use the following command.$ python3 manage.py runserver

Access to the Browser Access the application by entering localhost:8000/show, it will show all the available employee records. Initially, there is no record.

Adding Record Click on the Add New Record button and fill the details.

This section also allows, update and delete records from the actions column. After saving couple of records, now we have following records.

Update Record Lets update the record of x by clicking on edit button. It will display record of x in edit mode.

Lets, suppose I update x to x kumar then click on the update button. It updates the record immediately. Click on update button and it redirects to the following page. See name is updated. Same like, we can delete records too, by clicking the delete link.

Delete Record Suppose, I want to delete x, it can be done easily by clicking the delete button.


框架的名称受到比利时著名的吉普赛爵士吉他手Django Reinhardt的艺名的启发,因此为该框架创建了许多便捷附件的开发人员将他们称为Jazzband

对于ABC版本的Django,AB代表功能版本,C代表补丁版本
例如:Django version 2.1.3
2.1 is a number of feature release(功能版本
3 is a number of patch release(补丁版本

LTS: Long-Term Support (长期支持)软件开发中的著名标准。这意味着开发人员将在更长的时间内支持该版本的框架(对于Django,通常为3年或更长时间),您可以安全地将版本更新到较新的修补程序版本,而不必担心会破坏与源代码的兼容性

Django采用了MVT的软件设计模式,即模型(Model),视图(View)和模板(Template)

Model-View-Controller(MVC的主要思想是将责任划分为三个部分。模型部分包含业务逻辑,视图代表应用程序,控制器管理两个逻辑之间的数据流

Model -->        my_app/models.py
View -->           my_app/templates/my_app/index.html
Controller -->  my_app/views.py

在商店应用程序中,它可以是客户,产品和购买商品;在博客中,业务对象可以是作者,帖子和评论。

Django默认提供User 和 Group模型,来自django.contrib.auth.models

在cmd中创建虚拟环境
python -m venv web
激活虚拟环境
web\scripts\activate.bat
退出虚拟环境
deactivate



先安装django后创建项目
pip install django==3.0.2
要创建项目和第一个应用程序,请在命令行中运行以下命令
django-admin startproject magazine
cd magazine
django-admin startapp blog
mkdir blog\templates\blog

magazine/
├── blog
    ├── ...
    ├── models.py    # Model
    ├── views.py     # Controller
    └── templates    # View
        └── blog
            └── index.html
├── magazine
    ├── ...
    └── urls.py      # Controller
└── templates        # View
    └── base.html


为应用程序创建“templates”目录时
应将其命名为“<application name>/templates/<application name>”

你有 blog/templates/index.html and shop/templates/index.html 文件,其中blog和shop是项目中的应用程序。这种布局的主要缺陷是什么?
Django template loader返回找到的第一个"index.html" 。因此,您无法控制自己得到哪一个

magazine\blog\templates\blog\index.html
<!DOCTYPE html>
<title>Movies</title>
 
<h1>Films by {{ director }}</h1>
 
<ul>
{% for movie in movies %}
  <li>{{ movie.year }} - {{ movie.title }}</li>
{% endfor %}
</ul>

magazine\blog\views.py
from django.conf import settings
from django.shortcuts import render
from django.views import View
 
movies = [
    {
        'title''Catchfire',
        'year'1990,
    },
    {
        'title''Mighty Ducks the Movie: The First Face-Off',
        'year'1997,
    },
    {
        'title''Le Zombi de Cap-Rouge',
        'year'1997,
    },
]
 
 
class MovieView(View):
    def get(self, request, *args, **kwargs):
        return render(
            request, 'blog/index.html', context={
                'director': settings.DIRECTOR,
                'movies': movies,
            }
        )



# magazine\magazine\urls.py
from django.urls import path
from blog.views import MovieView
 
urlpatterns = [
    path('', MovieView.as_view()),
]



magazine\magazine\settings.py中修改INSTALLED_APPS变量添加变量DIRECTOR
INSTALLED_APPS = [
    ...
    'blog',
]


DIRECTOR = 'James'



在<project_name>/settings.py文件中,您仅定义Variables变量,而不编写任何函数或类
BASE_DIR -->               The root of your project
INSTALLED_APPS -->    All the applications you wish to use
DATABASES  -->           Configuration of databases
ALLOWED_HOSTS -->     The hostnames for your server

开发服务器如果出现问题,您想显示回溯和其他有用信息。您可以DEBUG = True在settings.py模块中添加调试模式,生产服务器时,强烈建议设置DEBUG = False。

IS_RELEASE_SERVER = input().lower() == 'true'
DEBUG = not IS_RELEASE_SERVER

# 启动本地服务器
python manage.py runserver
等同于python manage.py runserver 8000


浏览器打开http://127.0.0.1:8000/

Controller由两种类型的文件组成:"views.py" and "urls.py".
在"urls.py"中,定义服务的路由。 Routing 是将请求链接与适当的视图处理程序进行匹配的过程

在"views.py"中定义了视图处理程序,它们在模型和视图之间扮演中介者的角色。一个视图处理程序是一个函数或一个类来响应请求。由于客户端和服务器之间的通信是HTTP协议的一种实现,因此处理程序将使用状态码进行回答


http状态码

让我们看看在有网站请求时它们如何交互。

#用户在视图中看到链接或按钮,然后按它并创建请求。
1. A user sees a link or a button in a View, presses it and creates a request.

#控制器收到请求。
2. The Controller receives the request. 

#它将请求传递给适当的处理程序。
3. It passes the request to the appropriate handler.

#处理程序调用Model方法从数据存储中检索对象。
4. The handler calls Model methods to retrieve objects from data storage.

#选择View模板以呈现响应。
5. It chooses the View template to render a response.

#用户看到响应。
6. A user sees a response.

 





每当我们创建模型,删除模型或更新我们项目的任何models.py中的任何内容时。我们需要运行两个命令makemigrationsmigratemakemigrations基本上会为预安装的应用程序(可以在settings.py中的已安装应用程序中查看)和您在已安装的应用程序中添加的新创建的应用程序模型生成SQL命令,而migration会在数据库文件中执行这些SQL命令。









评论

此博客中的热门博文

学习地址

清华大学计算机系课程攻略 https://github.com/PKUanonym/REKCARC-TSC-UHT 浙江大学课程攻略共享计划 https://github.com/QSCTech/zju-icicles https://home.unicode.org/ 世界上的每个人都应该能够在手机和电脑上使用自己的语言。 http://codecanyon.net   初次看到这个网站,小伙伴们表示都惊呆了。原来代码也可以放在网上卖的?!! 很多coder上传了各种代码,每个代码都明码标价。看了下销售排行,有的19刀的卖了3万多份,额di神啊。可以看到代码的演示效果,真的很漂亮。代码以php、wordpress主题、Javascript、css为主,偏前台。 https://www.lintcode.com/ 算法学习网站,上去每天刷两道算法题,走遍天下都不怕。 https://www.codecademy.com/ 包含在线编程练习和课程视频 https://www.reddit.com/ 包含有趣的编程挑战题,即使不会写,也可以查看他人的解决方法。 https://ideone.com/ 在线编译器,可运行,可查看代码示例。 http://it-ebooks.info/ 大型电子图书馆,可即时免费下载书籍。 刷题 https://github.com/jackfrued/Python-100-Days https://github.com/kenwoodjw/python_interview_question 面试问题 https://github.com/kenwoodjw/python_interview_question https://www.journaldev.com/15490/python-interview-questions#python-interpreter HTTP 身份验证 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication RESTful 架构详解 https://www.runoob.com/w3cnote/restful-architecture.html https://www.rosettacode.org/wiki/Rosetta_C...

PDF处理

虚拟pdf打印机 pdfFactory  https://fineprint.com PDFCreator  https://www.pdfforge.org 开源 cutepdf https://www.cutepdf.com/index.htm Doro PDF Writer http://www.the-sz.com/products/doro PdfScribe  https://github.com/stchan/PdfScribe/releases pdf阅读器 Sumatra PDF https://www.sumatrapdfreader.org/ 为什么 Python 用于 PDF 处理  如您所知,PDF 处理属于文本分析。 大多数文本分析库或框架仅使用 Python 设计。 这为文本分析提供了优势。 还有一件事,您永远无法在现有的机器学习或自然语言处理框架中直接处理 pdf。 除非他们为此证明了显式接口。 我们必须先将pdf转换为文本。 我们可以使用下述任何库轻松实现这一点。 在线转换pdf Sejda https://www.sejda.com/pdf-editor 每个文档 200 页的免费限制 https://www.pdf2go.com/ https://tools.pdfforge.org/extract-text PDF24 Tools https://tools.pdf24.org/zh/ 免费且易于使用的在线PDF工具 FreeOCR http://www.paperfile.net/ 适用于Windows的免费光学字符识别软件,支持大多数Twain扫描仪的扫描,还可以打开大多数扫描的PDF和多页Tiff图像以及流行的图像文件格式,FreeOCR输出纯文本,可以直接导出为Microsoft Word格式。 不支持中文 wkhtmltopdf 和 wkhtmltoimage 是使用 QT Webkit 渲染引擎将 HTML 渲染为 PDF 和各种图像格式的命令行工具。这些完全“无头”运行,不需要显示或显示服务。 https://wkhtmltopdf.org/ django-wkhtmltopdf 允许 Django 站点输出动态 PDF。它利用 wkhtmltopdf 库,允许您使用您知道...

安卓 之 apk下载、ADB、 scrcpy

Apk下载 下载离线安装apk https://www.apkmirror.com/ 免费和安全的Android APK下载 https://apkpure.com/ 被暴雷,有植入 https://apps.evozi.com/apk-downloader/ 可以将Google Play( https://play.google.com )中的apk文件所在网址直接下载到台式机和设备上 https://f-droid.org/zh_Hans/ F-Droid 是一个 Android 平台上 FOSS(Free and Open Source Software,自由开源软件)的目录,并提供下载安装支持。使用客户端可以更轻松地浏览、安装及跟进设备上的应用更新。 https://gitlab.com/AuroraOSS/AuroraStore Aurora商店 是Google Play商店的非官方FOSS客户,设计典雅。 Aurora商店不仅下载,更新和搜索Play商店等应用 https://github.com/OpenTracksApp/OpenTracks OpenTracks是一款运动跟踪应用程序,完全尊重您的隐私。 Tasker https://tasker.joaoapps.com/ 是一款适用于Android的应用程序,它可以根据用户定义的配置文件中的上下文、可点击或定时的主屏幕小部件来执行任务。它无需root或特殊的主屏幕就能控制Android设备。 AsciiCam AsciiCam可以从您的相机指向的任何位置实时生成ASCII图像。选择黑白,原色或全彩,拍照,并将其作为图像或HTML共享。您还可以在库中创建ASCII版本的图片,并且每次使用标准相机应用程序拍摄照片时,也可以选择自动生成ASCII版本。 AsciiCam是完全免费和开源的。 Apk1安装器 优化微信apk文件接收体验。 微信收到apk文件会加 ".1" 后缀导致打不开,必须自己手动找到文件重命名去掉后缀。 使用本安装器就可以在微信内,潇洒地点击直接打开。甚至可以在安装器内浏览apk1文件历史接收记录。 ADB ADB全名是 Android Debug Bridge,是开发或使用Android时很常用的工具。可以从电脑通过USB连线到Android手机上 https:...