文書の一部だけでなく、熟考のいくつかの時間を理解しました。私たちはジャンゴでいくつかの小さなプロジェクトを行うことができると思います
私たちは機能のログインそれについて話しましょう。
まず、アプリを作成するコマンドの管理を使用
cmdは、次のmanage.pyでジャンゴ管理者startappののappnameのを同じディレクトリを開きます。
あなたは、最初startprojectのを投影していない場合。私は、アプリ名がlogin_newですここです。一度作成さpycharmでプロジェクトを開きます。まず第一に、私たちはモデルを作成します。
単に機能を実現するために、私はここで2つのフィールドのみ、ユーザー名とパスワードをしています。モデルファイル内のコードを入力します。
django.db 輸入モデル クラスのユーザー(models.Model): ユーザー = models.CharField(max_lengthを= 20 ) パスワード = models.CharField(MAX_LENGTH = 200 ) デフ __str__ (自己): 戻りself.userの #は、ここにあなたのモデルを作成します。
CharFieldですが、このフィールドはかなり特殊で、フィールドタイプは、コンクリートのモデルだけでなく、他の種類は、次のドキュメントに行くことができている、あなたはフィールド長、ブラケットを参照してくださいする必要があります。これまでのところ、モデルが構築され、比較的簡単です。
最初の文の下で、私は一般的なモデルで開始することを好む他のいくつかのチュートリアルは最初からある読み始めました。来る方法を理解するかどうかは、すべて同じ
次に、adminファイルにこのモデルを追加し、
django.contribの輸入管理者 から .models インポートユーザー admin.site.register(ユーザー) #ここにあなたのモデルを登録します。
「login_new.apps.LoginNewConfig」以下に示すように文章は、アプリケーション構成設定に追加されます
そして、データベーステーブルを構築するために移行manage.pyのパイソンを入力し、成功した、login_newデータベース作成スクリプトのpython manage.py makemigrationsを生成します。意識的にhttps://www.cnblogs.com/afei123/p/11240182.htmlインストールされていない、パッケージをダウンロードダウンロードする必要があるmysqlclient
その上フィニッシュは、より良い完了するために、他の言語、背景に半分を終えました。私たちが管理エリアにサービスを開始するのpython manage.pyののrunserver新しいアカウントを作成することができるかどうかを確認することができます。
これらが行われ、あなたは物事を見るために持っています。
URLを解決するには、まず、下のURLが設定を投影します。以下のプラスで
経路(' テストアプリケーション/ '、(含める' testApp.urls '))を
この文は、アプリ内のURLへの変更を行った後、中に入ることができます。まず、ログイン機能を作成し、次のファイルビューに移動し、私が直接、完成した製品のバーコードに付属しています。
django.shortcuts インポートレンダリング から .modelsをインポートユーザ DEF :ログイン(リクエスト) コンテキスト = {} #1 セット状態 コンテキスト[ ' STAT ' ] = ' ログイン' IF ' ユーザ' と ' パスワード' に `` request.GET`` #場合提示されたデータ・ワード #の転送データ ユーザ`request.GET`` = [ 「ユーザ」] #ユーザデータベースクエリに = User.objects.getのPASSW(=ユーザーユーザー) IF `` request.GET`` [ ' パスワード' ] == passw.password: #比較データ コンテキスト[ ' titl1 ' ] = ' 成功' コンテキスト[ ' 名前' ] = `` request.GET`` [ 「ユーザー」] #成功したジャンプ成功ページの後に 戻ります(リクエスト、レンダリング「ログイン/ results.html 」、コンテキストを) 他: #のコントラストがの状態変更に失敗した コンテキストを[「間違った」 ] = 「失敗」 他: コンテキスト[ 「間違った」 ] = 「入力データしてください」 #は、元のインターフェイスに滞在することができなかった 戻るレンダリング(リクエスト、「ログイン/ login.htmlと」、コンテキスト)
コードrequest.GETは、戻り値の型が辞書で、パラメータを取り、実際に対応したhtmlファイルである、我々はコンテキストの辞書型を作成するには、バックグラウンドで前にデータを返すために使用されるキーコンテキストの値に対応するには、HTMLに設定されています、最初に私のディレクトリ構造とlogin.htmlとコードを掲載
<!DOCTYPE HTML > < HTML のlang = "EN" > < ヘッド> < メタのcharset = "UTF-8" > < タイトル> {{TITLE1}} </ タイトル> </ ヘッド> < ボディ> < フォームアクション= "/ログイン" 方法は=" GET " > < 入力タイプ= "text"の名= "ユーザー" > < 入力タイプ=" < 入力タイプ= "提出" 値= "登录" > </ フォーム> {%もし間違っ%} < H1 > {{間違っ}} </ H1 > {%のENDIFの%} </ ボディ> </ HTML >
I URLのポイントが終わったので、彼は次の中に、コードをURLを指定したURLのファイルを作成したので、まず、説明
from django.urls import path from . import views app_name = 'login_new' urlpatterns = [
#127.0.0.1:8000/login path('',views.login,name='login'),
#127.0.0.1:8000/login/regist path('regist',views.regist,name='regist'), ]
这表明我指定了两个url,一个对应login,一个对应regist,整段复制进代码的时候记得先去views里def一个regist方法。
回归到login,实现了之后再去看就觉得很简单,实际上就是一个数据传递,然后对模板不是很懂的话可以去看一下,jinja2。
在login.html里我们创建了一个form和一个,{{wrong}},这会返回错误,如果后台里wrong里有值,那么就会显示这一行。
按理说上述代码就完成了登录,结果如下
登录成功
这边忘了results文件,代码如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>results</title> </head> <body> <a href="/login">dengzhu</a> </body> <h1>{{stat}}success!!!!</h1> <h1>welcome ,{{name}}!</h1> </html>
不过忘了处理错误数据了,输入错的会直接报错
这个程序的url中会直接暴露密码,安全性也不是很足。
然后下面是regist的代码和html。
def regist(request): context = {} context['stat'] = 'regist' if 'user' and 'password' in request.GET: name = request.GET['user'] password = request.GET['password'] new_user = User(user=name,password=password) new_user.save() context['name'] = name return render(request,'login/results.html',context) else: context['wrong'] = '请输入数据' return render(request,'login/regist.html',context)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>regist</title> </head> <body> <form action="/login/regist" method="get"> <input type="text" name="user"> <input type="password" name="password"> <input type="submit" value="注册"> </form> <h1>{{wrong}}</h1> </body> </html>
regist那段没什么含量,我完成login功能后十分钟就写完了。
emmmm,讲的有点乱七八糟的