DjangoプロジェクトPRヒーロー:内容と経験


良い伝統を続けたい:
DjangoプロジェクトPR-Heroで使用されている成功したソリューションについて説明します。

私は皆に同じことをして、彼らの経験共有することを勧めます:)私はその理由を説明します。 私たちのチームでは、あるプロジェクトの成功したソリューションまたはアプリケーションはすべて、次のプロジェクトで必ず使用されていました。 プロジェクトは進化し、どんどん良くなりました。

しかし、部門内ではなくロシアのジャンジャイストのコミュニティ全体と経験を共有したらどうでしょうか?

中身は何ですか


私たちのプロジェクトは技術的に難しいと呼ばれていません。 実際、これは1つのサービスのオンラインストアであり、明らかに最も困難な部分はロボカッサを介した支払いです。

内部では、すべてがもう少し興味深いものです。 優れたオンラインストアと同様に、ビジネスプロセスを自動化します。 たとえば、各ステージに設定された時間を超えないようにします。そうしないと、プロジェクトマネージャーは怒ったロボ文字を受け取ります。

小さな例-アプリケーションの状態の可能な例:
STATUSES_WORKFLOW = {
'new' : [ 'owned' , 'cancelled' ],
'owned' : [ 'bullshit' , 'cancelled' , 'wait_payment' ],
'bullshit' : [],
'wait_payment' : [ 'unpayed' , 'cancelled' , 'write_release' ],
'unpayed' : [],
'write_release' : [ 'wait_approval' , 'cancelled' ,],
'wait_approval' : [ 'sending_release' , 'cancelled' ],
'sending_release' : [ 'feedback' , 'cancelled' ],
'feedback' : [ 'finished' , 'cancelled' ],
'finished' : [],
'cancelled' : [],
}


残念ながら、私たちはビジネスモデルのみを試みており、すべてが完全に自動化されているわけではありません。 したがって、今日は外側に注目します。 プロジェクトのいくつかの要件:
さて、そして約束どおり、私たちは前向きな経験に進みます。

dbtemplates


私はこのプロジェクトの発見の中でこのアプリケーションを宝石と考えています :)

DBTemplatesは、 Djangoテンプレートをデータベースに保存および編集する最も単純な機能を提供します

同時に、すばらしいHTMLエディターCodeMirrorをサポートし、 django- reversionを使用して変更の全履歴を保存します。

次のようになります。



このシンプルなソリューションは、サイト上のテキストを変更するというニーズを完全に満たしました。 別のプロジェクトで、DjangoCMSを試してみましたが、それは地獄です。 これはユーザーに適さないと言いますか? たぶん、しかし、短い遠足の後の女の子PR-schikiは首尾よくサイトページを支配して、作成しました。

マイナーな修正がない場合:
そして奇妙なことに、このシステムはプロジェクトに最適です。 ほとんどの場合、dbtemplatesを優先して、e-Legion.ruからDjangoCMSをスローします。
カスタマイズ可能なカウンター

これまでのところ、メニューの編集と新しいページの作成という小さなことは1つも完了していませんが、 django-treemenusはこのタスクに完全に対応すると思います。 e-legionに実装した後、さらに詳しく説明します。

自動ログイントークン


私はこのアプリケーションをプロジェクトの一部として作成しましたが、小さく未完成です:)しかし、それは非常に便利です。

アイデアは簡単です。ユーザーが電子メールからプロジェクトに自動的にログインできるようにします。

解決策:modelkaとミドルウェアを作成し、 autotoken=ER2332FFFパラメーターを任意のリンクに追加できます。ユーザーはサイトで自動的に認証されます。
  http://pr-hero.ru/manage_request/15/?autologin_token=ER2332FFF 
アプリケーションの使用は簡単です-ユーザーのトークンを生成し、レターに貼り付けます:
data[ 'autologin_token' ] = AutologinToken . objects . generate(target_user)
アプリケーションのソースコード (あまりscられないでください、コームする時間がありませんでした)

ジャンゴロボカッサ


アプリケーションの名前は、その目的を示しています。 ここで言うことはほとんどありませんが、 ありがとうございます 。 とても簡単だとは思いもしませんでしたが、30分でサービスをロボカッサに接続しました

Yandex Money、WebMoney、ターミナル、銀行カードでの支払いは、私たちと顧客にとって問題なく当座預金になります。

将来、エルバのような支払い画面用のアプリケーションを作成するアイデアがあります。 誰かが完成を教えてもらえますか?



ジャンゴロゼッタ


このアプリケーションは、プロジェクトを外国語に翻訳する際に非常に貴重な支援を提供します。 GoozyとPR-Heroの2つのプロジェクトで既に正常にテストされています。

たとえば、Goozyはウクライナ語、クロアチア語、さらにはフィンランド語に翻訳されました。 私はpoファイルをメールで送信し、poeditへのリンクを提供し、それから長い間マージして、翻訳されていない部分を送り返し、途中でこのまたはそのフレーズの意味についてコメントを与えなければなりませんでした。

Rosettaは、 翻訳ファイルを編集するための便利なWebベースのインターフェイスを提供します 。 poファイルをコンパイルしてWebサーバーを再起動する簡単なスクリプトを追加した後。



このソリューションは完璧に機能します! ネイティブスピーカーは完全に独立してポータルを翻訳し 、すぐに結果を観察してエラーを修正します。

django-localeurl


そして、今日の最後のdjango-localeurlアプリケーション。 それは簡単な問題を解決します-サイトの言語はリンクからのみ決定されます。 たとえば、pr-hero.ru / en / mediasまたはen.pr-hero.ru/mediasは、英語のサイトを一意に指します。

以前のプロジェクトでは、言語は自動的に決定され、Cookieに保存されていましたが、これは次の2つの理由から悪い判断です。
-検索エンジンは別の言語のコンテンツにアクセスできません。
-記事へのリンクを指定すると、不適切な言語設定を持つユーザーが404を受け取る可能性があります。

したがって、 URLが言語を一意に定義することを決定しました。 localeurlはこれに役立ち、リンクの言語の変更とページ上のリンクの変更の両方を担当します({%url%}をオーバーライドします)。

それだけです


結論を出す代わりに、コミュニティ内でプロジェクトを完了した後に経験を共有すれば、すべてのDjangoプロジェクトとアプリケーションがより良くなります。

私はあなたのプロジェクトをすぐに内部から見ることを本当に望んでいます :)

Source: https://habr.com/ru/post/J116741/


All Articles