用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的功能,即使不直接接触数据库,也能够操作数据库(由于我想创建一个三层结构的架构,所以能够轻松操作数据库真是太好了)。
编辑模型的步骤如下:
-
- 编写模型。
执行命令 “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で辞書に要素を追加、辞書同士を連結(結合
如果要向字典中添加新的元素,可以通过字典对象[键] = 值来实现。