はじめに 今回の記事では、私がPythonのWebフレームワーク「Django」で開発を進める理由を独自の視点から徹底解説する。今回の記事の読者の対象は主に以下の通り。 個人開発でDjangoを使おうとしているプログラマー Djangoについて深く理解したいプログラマー Djangoを個人開発(Web開発)に採用するメリット・デメリットを把握したいプログラマー すでにRailsやLaravelなど他のWebフレームワークを使った開発を経験しており、他のWebフレームワークの特徴を把握しておきたいプログラマー Web開発の技術選定で困っているプログラマー Djangoとは DjangoはPythonで開発されたWebフレームワークである。フレームワークを簡潔に説明すると、開発に必要な機能をデフォルトで揃えているものを意味する。WebフレームワークはWebアプリケーションの開発を効率化させるた
高度なチュートリアル: 再利用可能アプリの書き方¶ この高度なチュートリアルは、チュートリアル その8 が終わったところから始まります。Web投票アプリケーションを、新しいプロジェクトで再利用でき、他の人に共有できる独立した Python のパッケージへと変えていきましょう。 直近のチュートリアル 1 - 7 が終わっていないなら、一目通すことをおすすめします。例で作ったプロジェクトが以下の説明でも使われるからです。 再利用性の問題¶ Web アプリケーションの設計、開発、テスト、そしてメンテナンスには多大な労力が必要です。そして多くの Python プロジェクト、 Django プロジェクトは共通の問題を抱えています。この繰り返し作業を減らせたら良いと思いませんか? 再利用可能性はPythonの生き様とも言えるものです。Python Package Index (PyPI) にはあなたの
概要¶ Django プロジェクトを翻訳可能にするためには、Python コードやテンプレートに、多少のフックを加筆しなければなりません。このフックは 翻訳文字列 と呼ばれます。翻訳文字列は Django に「このテキストに対する翻訳が有効な場合、このテキストはエンドユーザの言語に翻訳すべきだ」ということを通知します。翻訳可能な文字列をマークすることは開発者の責任です。システムが翻訳できるのは指定された文字列だけなのです。 Django は、翻訳文字列を メッセージファイル に抽出するユーティリティを提供します。このファイルがあるため、翻訳者が対象の言語において翻訳文字列に対応する文字列を用意することが簡単になります。翻訳者がメッセージファイルの中身を書き終わったら、それをコンパイルしなければなりません。このプロセスは GNU gettext ツー ルキットに依存しています。 これが済めば
※記載間違いなどありましたらご指摘いただけると幸いです。 Djangoにおける言語翻訳 Djangoでは翻訳フレームワークを使って簡単に翻訳機能を実装することができます。 翻訳機能の実装手順は以下の通りです。 この中で3番目の翻訳用の文字列を作成する部分が一番大変な部分です。 その理由は、アプリケーション内のすべての表示可能な文字列を翻訳対象としてマーキングする必要があるためです。 トークンまたは文字列という用語は、アプリケーションで翻訳されるテキストの文字列を指します。 この記事内で扱っている翻訳という用語は、ある言語から別の言語へ文字列のマッピングを意味しています。 まとめると以下の通りです。 i18n とl10nについて ここで、i18n とl10nについて補足しておきます。 i18nは多言語化対応(Internationalization)で、l10nは地域にあわせて最適化(Loc
Django の管理サイトを構築するときに「 search_fields 」を使用してテキストボックスで検索条件を入力できるようにしているのですが、これだと一見するとどのフィールドで絞り込みを行っているのかが分からないので、今回は複数のテキストボックスの検索条件入力欄を作成し、どのフィールドで検索しようとしているのかを分かりやすくしてみようと思います。 前提条件 Python : 3.6.2 Django : 3.0.5こちらのソースをベースに実装していきたいと思います。 search_fields を利用する方法Django の管理サイトでは「 search_fields 」を設定することでテキストボックスで検索できるようにすることができます。 @admin.register(User) class UserAdmin(ExportMixin, admin.ModelAdmin): ..
django-admin startproject django01 cd django01/ python manage.py migrate python manage.py startapp home from django.http import HttpResponse from django.shortcuts import render import random def index(request): images = [ "fmervo000001gsle.jpg", "rn2ola000000lk6e.jpg", "rn2ola000001gogf.jpg", "6fujishigai_s_s.jpg", "rn2ola000000lk6r.jpg", "5fujikawarakuza_s_s.jpg" ] url_base = "https://www.city.fu
http://127.0.0.1:8000/admin へアクセスし,ログインパスワードを入力するとDjangoの管理画面へ遷移するかと思います。 Djangoの管理画面(デフォルト) しかし,デフォルトでは英語なのでなんとなく使いづらいのです。 じゃあ。どうする。日本語化しましょう。 settings.pyを修正 settings.pyの該当部分を少し修正します。 デフォルトでは以下のようになっていると思います。 LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' これを,こう修正 LANGUAGE_CODE = 'ja' TIME_ZONE = 'Asia/Tokyo' これで設定完了です。 http://127.0.0.1:8000/admin へアクセスすると Django管理画面(日本語化) しっかり日本語へ対応できました。 Djangoについて学
この記事は 2012 Pythonアドベントカレンダー 11日目の記事です。 Django で美味しい唐揚げとか作れたら #python_adv のネタになるのに Django では美味しい唐揚げを作れない。これだから Django は…— ねじめ (@drillbits) December 5, 2012 作りました 唐揚げです。 django-karaage PyPI にはあげてないので github から pip install してください。 $ pip install git+git://github.com/drillbits/django-karaage.git#egg=django-karaageDjango の settings.py にミドルウェアとして追加します。 MIDDLEWARE_CLASSES = ( # 略 "django_karaage.middlewar
models.pyで、ForeignKeyやManyToManyFieldと一緒に使う related_name の使い方についてです。 related_nameは、ForeignKeyを使ってリレーションを張った時に、逆参照するときに使います。 related_nameを使う前にまずは、ForeignKeyの基本的な使い方です。 models.py class Author(models.Model): name = models.TextField(max_length=30 ) def __str__(self): return self.name class Book(models.Model): title = models.TextField(max_length=60) author = models.ForeignKey(Author, on_delete=models.C
django.utils.text.Truncator の chars()・ word() メソッドは テンプレートフィルター truncatechars_html・ truncatedwords_html の内部で使われています。 【CVE-2019-14233: Denial-of-service possibility in strip_tags()】 django.utils.html.strip_tagsに渡した文字列が不完全なHTMLだった場合にDoS(Denial-of-service)攻撃に繋がる場合があります。 この関数はテンプレートフィルター striptags の内部で使われています。 【CVE-2019-14234: SQL injection possibility in key and index lookups for JSONField/HStoreFiel
Djangoのアプリケーションをローカルでrunserverで動かす場合は、相対パスでテンプレートディレクトリ等を指定しても問題ないのだが、Apache経由等で動作させたりすると、カレントディレクトリの関係上うまくいかないことが多い。 settings.pyでBASE_DIRを定義するのがスマートなようだ。 settings.pyの最初のほうに以下を追加 import os BASE_DIR = os.path.dirname(os.path.abspath(__file__)) SQLiteのDBファイルの設定例 DATABASE_NAME = os.path.join(BASE_DIR, 'data/dbfile') 各アプリケーションフォルダの下にあるtemplatesフォルダは特に設定なしでも認識されているが、プロジェクトフォルダ直下に作った場合は認識されなかった。テンプレートを一
How to use sessions¶ Django provides full support for anonymous sessions. The session framework lets you store and retrieve arbitrary data on a per-site-visitor basis. It stores data on the server side and abstracts the sending and receiving of cookies. Cookies contain a session ID – not the data itself (unless you’re using the cookie based backend). Enabling sessions¶ Sessions are implemented via
Djangoにおいて一覧画面から詳細画面を表示する際、viewで使用するモデルのpkを取得する方法をご紹介します。 条件 Django 2.1.2 Python 3.7.0 画面構成 一覧画面と詳細画面がある想定です。 一覧画面で表示される任意のデータをクリックすると、対象データの詳細画面に遷移するものとします。 # urls.py from django.urls import path from . import views app_name = 'monitor' urlpatterns = [ # 一覧画面 path('', views.IndexView.as_view(), name='index'), # 詳細画面 path('monitor/<int:pk>/', views.DetailView.as_view(), name='detail'), ] viewの設定 g
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く