用Python进行Web应用开发的备忘录

首先

在学习完Python网络爬虫之后,我对利用获取的数据创建Web应用程序产生了兴趣,因此记录了一些研究实现方法的备忘录。

哪个框架是最好的?

有人推荐使用Django框架。

    参考記事:PythonでWebアプリケーションを開発!人気のフレームワークも大紹介

这里详细介绍了Django。

    • Django ドキュメント

 

    Github

如何安装Django

参考以下的指南,在您的计算机上安装Django!

我试图执行$ pip install django,但被告知pip本身的版本太旧,需要进行更新…

    参考記事:Python Tips:pip そのものをアップデートしたい

在Git Bash中,使用$ python无法启动Python Shell。
好像是一种规定…
在Git Bash中最好不要使用python(最好在命令提示符中静静地执行)。

    参考記事:Git for WindowsでPythonがうまく動かない場合の対処法

创建项目和应用程序

    参考記事:【Django入門】Djangoアプリの設計哲学!MTVモデルをmodelsを通して学ぼう!

项目创建的命令如下:

django-admin startproject mySite

创建模板的命令如下

python manage.py startapp myapp

听说通过使用名为model的功能,即使不直接接触数据库,也能够操作数据库(由于我想创建一个三层结构的架构,所以能够轻松操作数据库真是太好了)。

编辑模型的步骤如下:

    1. 编写模型。

执行命令 “python manage.py makemigrations 应用名”。

执行命令 “python manage.py migrate”。

如何使用模型

    参考記事:Django 3.0 のモデルフィールドリファレンス一覧まとめ

使用模板的方法

    参考記事:【Django入門】templateとHTMLを使ってWebページを表示しよう

首先,在settings.py文件中的TEMPLATES下面的’DIRS’部分添加描述。

os.path.join(BASE_DIR, 'templates'),

根据我了解,这段话的意思是要在一个名为「templates」的文件夹中放置模板文件。

在创建templates目录后,按照以下顺序进行模板显示处理流程。

    • view関数の定義

 

    URLとview関数の紐づけ(プロジェクトとアプリケーションそれぞfれで)

这种感觉。

当关联完毕后

python manage.py runserver

执行该命令后,可以在本地主机上启动服务器并验证是否显示了模板。

想要尝试使用Django的模板,因为它具有许多有用的功能。详情请参考官方文档。

关于{% csrf_token %}的CSRF防御措施。

    参考記事:【Django】 csrf_tokenの仕組みとCSRF無効化・画面カスタマイズする方法

在Django中,它默认会执行CSRF验证。
有关CSRF及其对策的详细信息,请参阅以下内容。

「クロスサイトリクエストフォージェリ(CSRF)」とは?
CSRF(クロスサイトリクエストフォージェリ)の意味と対策方法

根据输入到网页的数据,执行网页爬取并展示的整个流程。

参考文章:使用Python和Django进行网络应用开发(包含抓取数据)。

在`views.py`文件中会写下各种内容。

观点这个概念

在采用MTV(模型,模板,视图)设计理念的Django中,View负责从浏览器的请求中获取页面/数据并生成响应。

    参考記事:MTVを理解しよう

在Django中,有一种称为”通用视图”的功能,它会根据用例自动设置适当的默认值。

    参考記事:Djangoにおけるクラスベース汎用ビューの入門と使い方サンプル

使用不同类型的通用视图的方法请参考以下内容。

    • 参考記事:

Djangoにおけるクラスベース汎用ビューの入門と使い方サンプル
Djangoの 汎用クラスビューをまとめて、実装について言及する

由于想要根据输入的数据运行网络爬虫,这次使用form使用CreateView。

关于reverse/reverse_lazy函数

当指定CreateView的success_url变量(在创建成功时转到的页面的URL)时,需要使用名为reverse_lazy的函数。

reverse和reverse_lazy是用于在调用“通过指定名称调用URL”时使用的函数。

    参考記事:reverseの使い方について分かりやすく解説【具体的なコード付き】

具体来说,当使用reverse(‘home’)时,它会调用urlpatterns中指定name为’home’的url。

reverse和reverse_lazy的区别在于,当需要在URLConf(即urls.py)之前使用reverse函数时,应该使用reverse_lazy。

    参考記事:[Django] success_urlとget_success_urlおよびreverseとreverse_lazyの使い分け

在使用课堂内部时,似乎要相当于“在加载URLConf(即urls.py)之前”,因此使用reverse_lazy。

要正确理解惰性评估(Lazy Evaluation),必须理解在Python中何时评估什么,但老实说,我不太清楚…

    参考記事:Difference between reverse() and reverse_lazy() in Django

在Python中,列表和添加元素的方法是怎样的?

    • 参考記事:

【Python】appendの使い方を理解しよう!役割や実践方法を徹底解説!
既存のlistに複数の値を一度に追加したいときは「+=」または「extend()」を使うと1行で書ける

通过使用append()函数,可以向现有的列表中添加单个元素。
通过使用extend()函数,可以向现有的列表中添加多个元素。

注意! 如果将列表作为append的参数输入,它将直接嵌套在原始列表中。使用extend,可以将列表的元素直接添加到内部(有点复杂…)

关于render函数

Reference article:

请查阅参考文章:

    • Python Django チュートリアル(3)

 

    公式ドキュメント

当传递请求和模板路径时,该函数将返回使用该模板进行渲染的结果作为HttpResponse。通过将字典类型的值传递给第三个参数,可以将值传递给模板。

将通过append函数将元素(从网页爬取得到的元素)放入字典列表中,并将其作为模板传递给HTML内的元素,以插入其中。

关于Django中的模型。

(Translation: About the model in Django.)

    参考:公式ドキュメント

对于model类,默认情况下会添加一个Manager。

    • 機能:DB操作のためのインターフェイスを提供している

 

    名前:objects(なんでmanagerではないのだろうか…?)

模型经理具有各种不同的方法。

.objects.all():DB内の全ての要素を返却する

.objects.filter():条件を指定して返却する

请注意:要调用模型管理器拥有的方法,必须使用.objects的语法。
参考:【初学者】理解在Django模型操作中何时需要使用objects和何时不需要使用objects

在Python中编写条件语句的方式

    参考記事:[Python入門]if文による条件分岐

这是基本的但重要的事情

在Python中的比较运算符

– 参考文献:比较运算符的使用方法

人们常常忽视「等同」并将其误解为”不等于”。

在Python中的return语句。

    参考記事:戻り値をマスターしよう!Pythonのreturn文の使い方を簡単解説

如果要返回一个列表,可以写成return [aaa,bbb]这样的形式。

在Python中如何使用函数。

    参考記事:python 関数の基本が初心者でもわかる!引数や戻り値も理解できる!

虽然基本但很重要的讨论。

Python中数据类型的范围

    • 参考記事:

[Python]リスト、タプル、辞書、集合の違い
[Python入門]リストの基本 (1/4)

因为有很多东西,所以我们可以在使用中逐渐记住。

词典形式

    参考記事:Pythonで辞書に要素を追加、辞書同士を連結(結合

如果要向字典中添加新的元素,可以通过字典对象[键] = 值来实现。

广告
将在 10 秒后关闭
bannerAds