Django を学び始めたばかりの初心者に注意してください。Django をより良く学び、間違いを減らし、寄り道を避けるのに役立つ 10 の注意点があります。一見の価値があります~~
1. プロジェクトを含めないでください。 name 参照コード内
たとえば、「project」という名前のプロジェクトを作成し、「app」という名前のアプリケーションを含める場合、次のコードは適切ではありません:
from project.app.models import Author
欠点は、アプリケーションとプロジェクトが密接に関連することです。アプリケーションを簡単に再利用できなくなります。将来プロジェクト名を変更する必要がある場合は、我慢する必要があります。
推奨されるアプローチは次のとおりです:
from app.models import Author
PYTHONPATH でプロジェクト パスを設定する必要があることに注意してください。
2. MEDIA_ROOT と TEMPLATE_DIRS をハードコーディングしないでください。
プロジェクト構成ファイル settings.py で次のコードを使用しないでください:
TEMPLATE_DIRS = ( "/home/html/project/templates",) MEDIA_ROOT = "/home/html/project/appmedia/"
実稼働環境にデプロイするとき、またはサーバーを移行するときに問題が発生します。
次の方法を使用することをお勧めします:
SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) MEDIA_ROOT = os.path.join(SITE_ROOT, 'appmedia') TEMPLATE_DIRS = ( os.path.join(SITE_ROOT, 'templates'),)
(abspath も使用できます。realpath との違いについては、http://rob.cogit8.org/blog/2009/May/05/django-and を参照してください) -relativity-updated/)
3. テンプレート内の静的ファイルのパスをハードコーディングしないでください
テンプレート内で CSS、JavaScript、または画像をリンクする場合、次の方法を使用することはお勧めできません:
<link rel="stylesheet" type="text/css" href="/appmedia/amazing.css" /> <script type="text/javascript" src="/appmedia/jquery.min.js"></script>
Whenプロジェクトでは静的ファイルを他のサーバーから提供する必要があります。通常、これは別の http アドレスになるため、すべての /appmedia/ を新しいアドレスに置き換える必要があります。Web サイト用のコードを記述するのは非常に面倒です。
安心の解決策は、ハードコーディングされたパスの代わりに {{ MEDIA_URL }} を使用することです:
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}amazing.css" /> <script type="text/javascript" src="{{ MEDIA_URL }}jquery.min.js"></script>
テンプレート コンテキスト変数を取得するにはどうすればよいですか? RequestContext を使用してください:
return render_to_response("app/template.html", {'var': 'foo'}, context_instance=RequestContext(request))
RequestContext から現在のユーザーやその他の情報を取得することもできます
4 ビューにビジネス ロジック コードを書き込まないでください
たくさんの本を読んだことがあっても、混乱しないでください。彼らはすべてのロジックを views.py に記述しますが、それはやめてください。これは単体テストやコードの再利用に役立たないためです。
それでは、ビジネス ロジックをどこに配置すべきでしょうか?モデルに組み込むか、別のヘルパー モジュールを作成することをお勧めします。
もちろん、モデルから著者を取得するには、著者リストを取得するコードをビューに配置できます。
5. デプロイ時に DEBUG を False に設定することを忘れないでください。
デプロイ中に DEBUG を無効にすることを忘れることがよくあります:
import socket if socket.gethostname() == 'productionserver.com': DEBUG = False else: DEBUG = True
別の方法は、別の設定ファイルを使用することです:
#文件名:settings_debuy.py #包含调试模式的配置信息 #http://www.pythontab.com #使用python manage.py runserver settings=settings_debug.py来运行项目 from settings import * DEBUG = True #还可以配置更多在调试时使用的变量:)
6. カスタム テンプレート タグは 1 回だけ読み込みます
カスタムまたはサードパーティのテンプレート タグとテンプレート フィルターを使用する必要がある場合、通常はテンプレート内で使用されます:
{% load template_tags %}
実際の状況では、これらは上記のコードはカスタム テンプレート タグとテンプレート フィルターのテンプレートで使用するため、DRY ではありません。
from django import template template.add_to_builtins('app.templatetags.custom_tag_module')
上記のコードをプロジェクト開始時に読み込めるモジュール(settings.py、urls.py、models.pyなど)に入れてください。
上記のコードの機能は、プロジェクトの開始時にカスタム テンプレート タグまたはフィルターをロードすることです。これらは、{%load template_tags %} なしでテンプレート内のどこでも使用できます。
7. URL を適切に設定して使用する
次のような 1 つの urls.py ファイルですべての URL を設定しないでください。
urlpatterns = patterns('', url(r'^askalumini/question/$','.....registerInstitution',name='iregister'), url(r'^askalumin/answer/$','someview.....',name='newmemberurl'), url(r'^institution/member/$','someview.....',name="dashboardurl"), url(r'^institution/faculty/$','editInstitute',name="editinstituteurl"), url(r'^memeber/editprofile/$','editProfile',name="editprofileurl"), url(r'^member/changepassword/$','changePassword',name="changepasswordurl"), url(r'^member/forgotpassword/$','forgotPassword',name="forgotpasswordurl"), url(r'^member/changepicture/$','changePicture',name="changepictureurl"), url(r'^member/logout/$','memeberlogout',name="logouturl"), , )
推奨される方法は、各アプリケーションの URL を独自の urls.py で設定することです。アプリケーションはさまざまなプロジェクトで再利用しやすくなります:
urlpatterns = patterns('', (r'^$', include('institution.urls')), (r'^institution/', include('institution.urls')), (r'^askalumini/', include('askalumini.urls')), (r'^member/', include('member.urls')), )
以下は askalumini アプリケーションの urls.py です:
urlpatterns = patterns('askalumini.views', url(r'^$','askHome',name='askaluminiurl'), url(r'^questions/(?P<questionno>\d+)/$','displayQuestion',name='askquestiondisplay'), url(r'^askquestions/$','askQuestion',name='askquestionurl'), url(r'^postcomment/$','postComment',name="askquestioncomment") )
静的ファイル パスはハードコーディングすべきではないと述べましたが、URL 処理メソッドもハードコーディングする必要があると述べました。ハードコーディングしないでください。そうしないと、アドレスを変更するときに多くの変更が必要になりますが、これはいくつかの URL 関数を使用することで処理できます。
/project/askalumini/urls.py では、URL ごとに名前が定義されており、ハードコーディングの代わりにビュー、テンプレート、モデルで URL を効果的に処理するのに役立ちます。
名前の一意性を確保するために、URL に
たとえば、views.py ファイルには次のコードがあります:
HttpResponseRedirect("/askalumini/questions/54")
これを次のように変更してください:
from django.core.urlresolvers import reverse HttpResponseRedirect(reverse('askquestiondisplay',kwargs={'questionno':q.id}))
モデル内で models.permalink デコレータを使用して URL をフォーマットします:
@models.permalink def get_absolute_url(self): return ('profileurl2',(),{'userid': self.user.id})
URL タグを使用します代わりにテンプレート内でハードコード:
{% url askquestiondisplay 345 %} <a href="{% url askquestiondisplay 345 %}"> Ask Question </a>
8,调试
调试通常会借助一些第三方工具来获得更多的运行时信息。
一个请求执行了多少句SQL?花了多长时间?
调用的哪个模板?客户端设置了什么COOKIE?SESSION呢?。。。
你可以使用django-debug-toolbar查看上面甚至更多的信息
另一个工具是Werkzeug debugger,它可以在错误页面打开python shell,让你更方便的跟踪错误信息
还有pdb,一个强大的调试工具:http://ericholscher.com/blog/2008/aug/31/using-pdb-python-debugger-django-debugging-series-/
9,了解pinax备用
django最大的优点是代码重用,DRY,pinax就是这样一个平台,包含了许多可拿来直接使用的代码,比如openid,电子邮件验证等等。请访问:http://pinaxproject.com/
10,了解一些有用的第三方应用
1)数据库升级工具
什么是数据库升级工具?你运行了syncdb,运行了一年之后,对模型做了更改,添加了字段,删除了字段,要再运行syncdb吗?或者ALTER TABLE ...?
django-evolutions可以帮你完成上面的事情,但它好像不够强壮:http://code.google.com/p/django-evolution/
South能很强壮地完成上面的事情,但是需要学学怎么用:http://south.aeracode.org/
2)模板系统
django自带的模板系统是可以替换的,并且各自有优缺点。
template-utils增强了模板的比较标签等功能 ,并提供其他的一些实用特性
Jinja是一个完整的第三方模板系统,可以替换默认模板系统,它提供了许多优越的特性
3)第三方应用
django command extensions提供了很多实用的命令行功能:
shell_plus加载所有django模型
runserver_plus整合了Werkzeug调试工具
生成模型图表,你可以展示给你的老板
……

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
