BBSプロジェクトのアーキテクチャ

データベース設計

ユーザ・テーブル(そのテーブルAUTH_USER継承カスタム表ABSTRによって、使用されます。)

携帯電話の電話
アバターアバター
CREATE_TIME作成した
#外部キー のブログサイト1つの個々のテーブル

個人サイトテーブル

SITE_NAMEサイト名
SITE_TITLE格言は、
スタイルをsite_theme

タグ表

名前タグ名
#外部キー のブログ多くの個々のサイトに複数のタグを含む各サイト

カテゴリー表

名前カテゴリ名
#外部キー のブログ多くの個々のサイトの複数の分類を含む各サイト

記事のテーブル

タイトル記事タイトル
降順ページ
コンテンツ記事の内容
CREATE_TIME記事の作成時間

外部キー
、多くの個人のブログサイトの下にサイトの記事の数ができ
、タグ、ラベル、多くの記事がラベルよりも多くを持っているが、ラベルが複数の記事に対応することができ
カテゴリ記事の数以下の多くの分類分類

通常のフィールド
#のデータベース設計の最適化(******)はチャンがポイントテーブルクエリデータを強化し、データベースクエリを減らし、これらのポイントを設定する必要はありません
#は、トランザクションを開きますあなたが動作点親指テーブルを踏む際に、以下のデータが変更されます
一般的な分野なコメントcomment_num 
、一般のフィールドup_numのようなポイント数
ポイントが通常のフィールドをdown_num強化しました

テーブルの上に親指ポイントステップ

多くのユーザのようなユーザテーブルは一つだけのユーザに対応し、ユーザが異なる同様ポイントができる
物品に対応するだけテーブル多くの記事と同様の物品を、物品は、同様に複数有することができる
is_up 0 /を1

コメント表

ユーザー対多のユーザテーブルは、ユーザによって書かれたレビューで、ユーザーはより多くのレビューを書くことができ
、多くの記事のテーブルに記事を   
コメントレビュー         
作成さCREATE_TIME    
がある場合は、親対多のテーブルのコメント(自己相関)親コメントid値あなたが親解説されている値がない場合は、子供のいるコメント

 

登録機能  フォームコンポーネントの使用は、ログイン情報が正しいことを確認し、ページをレンダリングします

その後、1ファイル入力ボックスセットラベルに=「myfileを」ラベルに設定されたID =「myfileの」入力ボックスと隠しファイル、、をクリックして二つの単語がポップアップファイル入力ボックスの効果を持っています。

<ラベル= "myfileの"用 > アバターは、
デフォルトのアバター画像を設定
 <IMG SRC = " /static/img/default.jpg " ALT = ""高さ= " 80 "スタイル= " マージン左:20ピクセルを"上記のid =述べた" IMGを" > 
</ label>は
<タイプ=の入力ファイルは、 上記のid =「myfileの」言及したスタイル= :なしディスプレイを実行します >#ファイル入力ボックスを

登録機能一般的なプロセス:

1.ビュービューのフォームオブジェクトを作成し、テンプレートは、入力ボックスをレンダリングする、層に伝達されます。

FileReaderのは、AJAXオブジェクト読ん登録ページの画像を選択します。

テンプレート層に提出3書き込みAJAXデータは、レイヤビューは、受信したデータ、受信データのパリティ成分フォームを見てチェックrequest.POSTに直接渡すアセンブリを形成します

4.楽屋パス

ログ機能

 

ホーム機能

 

2019年9月27日

ログアウト機能

auth.logout(リクエスト)

パスワードの変更

ブロック内のページモードをコピーします

それは、フォームの送信フォームのinputタグである必要があり、それはボタンにはできません

管理者の管理

スーパーユーザーのログインの背景を作成するには

Admin.pyアプリケーションでファイルを検索し、あなたが操作を見たいディクテーションを登録し、背景データ管理にログインするには、スーパー管理者アカウントを使用します

django.contribのインポート管理者
 から app01 輸入モデル

admin.site.register(models.UserInfo)
admin.site.register(models.Blog)
admin.site.register(models.Tag)
admin.site.register(models.Category)
admin.site.register(models.Article2Tag)
admin.site.register(models.Article)
admin.site.register(models.UpAndDown)
admin.site.register(models.Comment)

 

ユーザー映像ショー

メインページ表示

プロフィールの構造

個人的なサイトとユーザーSITE_NAMEテーブルセッティング同じ名前

ステップ:

1.があるかどうかを確認するために、個人的なサイトを入力してください

返されたフィルタクエリ結果、クエリセットオブジェクト(単一クエリセットオブジェクト

印刷結果:<クエリセット[<のUserInfo:ジェイソン >]]> [
印刷タイプ:<クラスのdjango.db.models.query.QuerySet '>  

最初のクエリフィルタ>>()

印刷結果:ジェイソン    これは、ターゲットである
印刷タイプ:< クラス app01.models.UserInfo  >

オブジェクトのクエリセットの複数の(バックグラウンドループを除去する必要性への転送用)

<クエリセット[<記事:ネットコアが闊歩のサポートを追加>、<記事:ドッカー作曲とドッカースタックの違い>、<記事:FFmpegのを学ぶ初心者 - 完全なAPIは条<、>のビデオを読み出して出力するために呼び出します。学習します> JavaのSPI原理について、<記事:ジャンゴ+ MySQLのダッシュボードのWebクライアントデータベースの可視化>、<記事:コレクションの関連付けをMyBatisのマルチパラメータ渡しの使用を最適化>、<記事:コードの200行ミニASP.NETコアを達成するために>]>

 

サイドバーのレンダリング

サイドバー機能

 

2019年9月28日

セットアップまず、記事の詳細ページ

コピーブログの内容とスタイルの公園、フロントページに表示されるコードの内容に注意を払う|安全な脱出をキャンセルするには、フロントエンドのコード

第二に、親指は、機能をステッピングポイント

ユーザーがログインしているかどうか1.まずチェック

request.user.is_authenticated()

この記事のユーザーの親指ポイントが自分を書くことに段階にあるかどうか2.チェック

3.チェック現在のユーザーが、ここまでとなって親指を持っているかどうかのステップ

4.テーブルの上にステップ物品テーブルと親指の点に記録されたデータが記録されなければならない変更

クエリは、Fを使用しています
models.Article.objects.filter(PK =のarticle_id).update(up_num = F( 'up_num')+ 1)

またはテーブルデータクエリのフィールドが外部キーである場合、フィールドは、共通フィールドである場合、次に、物体視野を通過するように、時間を作成し、特定の値を渡します。(******)これがベストです

= models.Article.objects.filterのarticle_obj(PKはのarticle_id =ブログ=ブログ)1次回()
条の表に、PKは共通のフィールドがのarticle_idを渡すある具体ブログを指す外部キーであり、すべてのオブジェクトは、ブログを送信します
models.UpAndDown.objects.create(Articleこの記事だった= article_obj、からrequest.user =ユーザー、is_up = is_up)
または(ないオブジェクト値が特定の値を渡す取ることができない場合)
(models.UpAndDown.objects.create のarticle_id =のarticle_id、からrequest.user =ユーザー、is_up = is_up)
第二のデータベースのフィールドに応じて、モデルを記述するために応じて最初のフィールドを書き込むために書かれています

5.後端にエスケープタグをキャンセル

django.utils.safestring 輸入mark_safeの

mark_safe(' 请先<a href="/login/">登录</a>に'

 

遠位AJAXの分析:

1. [判断は親指であるかのポイントを踏ん

クリックされたラベルに応じたクラス属性があり、取得ブール値の文字列形式を。点は賞賛のポイントを決定することであるまたは踏ま。

記事IDおよびバックエンドにブール値を渡します

コールバック関数は単に変更されたページのステップの予選またはポイントポイントのように、コードに応じて決定するために、バックエンドから返された結果を受信します

第三に、レビュー

フロートをキャンセル

クラス = " clearfix "

1.コメントボックスとコメントスタイルのリストを作成します

2.ajax判断は、バックエンドコンテンツに渡された記事やコメントのidのルートコメントまたはサブコメントは、バックエンドに異なるコンテンツ傍受リターンを、です

バックエンドのデータを受信3. POSTは、データをに保存する、データの同期を行うコメントフォーム業務を書くために、ここで、記事のコメント欄テーブル。

4.バックエンドによって返された受信機フロントエンドコード、決意、ユーザがコンテンツに追加されたコメントのリストを見直し、リストスタイルを定義する必要があります。

5.子供がコメントを生成し、返信します。

 

おすすめ

転載: www.cnblogs.com/wangcuican/p/11609072.html