同じプロジェクト内のアプリケーション間でURLを渡す


1

私はAPIをモックアップしようとしています。異なるWebサービスを表すためにDjango内の別々のアプリケーションを使用しています。 App AにApp Bに対応するリンクを取り込み、jsonの応答を解析するようにしたいと思います。

App BのURLを動的に構築して、開発中のコードをテストし、本番前に変更しないようにする方法はありますか?問題は、リンクの一部としてlocalhostを使用できないことです。

私は現在urllibを使用していますが、最終的にはWebサービスRESTのパラダイムに適合した、よりハッキリでないものをやりたいと思います。

2

あなたは

if settings.DEBUG: 
    other = "localhost" 
else: 
    other = "somehost" 

ような何かを行うと、外部URLを構築するために他を使用することができます。通常、DEBUGモードでコードを作成し、非DEBUGモードでデプロイします。 DEBUGは標準のDjangoのことです。

  0

platform.node()もこれに本当に便利です(プラットフォームモジュールは標準ライブラリの一部です)。 25 9月. 082008-09-25 03:46:05


1

"Django内の別々のアプリケーション"とは、共通の設定でアプリケーションを分離することですか?つまり、同じDjangoサイト(またはプロジェクト)内の2つのアプリケーションですか?

もしそうならば、{%url%}タグは、設定ファイルにリストされているアプリへの絶対URLを生成します。

別々の設定で別々のDjangoサーバがある場合、標準的なインターネット上のURI設計の問題があります。あなたのURIは、ホスト名だけが変更されても一貫性があります。

- http://localhost/some/path - development 

- http://123.45.67.78/some/path - someone's laptop who's running a server for testing 

- http://qa.mysite.com/some/path - QA 

- http://www.mysite.com/some/path - production 

あなたは、ホストの情報を提供する必要はありませんので、あなたのすべてのリンクは<A HREF="/some/path/">です。

これは、一般的には最も効果的です。誰かのランダムなラップトップをテストサーバーにすることができます。 ifconfigを使用してIPアドレスを取得できます。

  0

テンプレート以外の場所で{%url%}機能を使用するにはどうすればよいですか? 24 9月. 082008-09-24 18:44:19

  0

model.get_absolute_url() 24 9月. 082008-09-24 23:48:24

  0

django.core.urlresolvers.reverse(ドキュメント内を参照)を使用して、モデルの絶対URLだけでなくURLを取得することもできます。 25 9月. 082008-09-25 03:45:24