Djangoの設定ファイルには、追加または削除pycharmとデータベースへの接続ジャンゴ、テーブルとテーブルの変更検索を作成します

 あなたは、プロジェクトファイルのフォルダ構成を作成した後

あなたはpycharmでプロジェクトを作成する場合>設定は、自動的にアプリケーションの作成を支援し、自動的にテンプレートフォルダを作成するには、アプリ名をカスタマイズする場合は、手動で、テンプレートリスト「DIRS」を追加しない場合はINSTALLED_APPSは自動的に、新しいアプリを追加していない構成を表示しますそれを手動で追加し、パステンプレートフォルダを追加しませんでした。

ログ機能
1.ルートL(R&LT「ログイン^ /」、views.login)ないアクセススラッシュは、内部ルーティングを削減すれば、自動的にリダイレクト

すべての

2.すべてのフロントエンド・ブラウザレンダリングページはHTMLファイルのバックエンドで書かれている、これらのファイルは、フォルダのデフォルトのテンプレートで書かれています。

3.すべての静的ファイル(CSS、JS、フロントエンドのサードパーティのライブラリ)は、静的なデフォルトのフォルダに配置されています

htmlページ道の外部リソースの導入
1)CDN
2)地方

静的な設定ファイル

STATIC_URL =「/静的/」
静的な設定ファイル、外の世界にさらされることが、まだすべてのリソースの下にサーバーのフォルダにアクセスすることができます
[= STATICFILES_DIRS
os.path.join(BASE_DIR、「静的」)]

STATIC_URL =「/静的/」#インタフェースプレフィックスあなたの静的フォルダの少し関係名で(着信リンクはドキュメントテンプレートフォルダに接頭辞各HTML)は、静的なフォルダ名などで、デフォルトでは、この接頭辞ではありません!
輸入のjQuery、CSSのhtmlファイルのテンプレート、静的フォルダ接頭辞にjsのリンクは、対応するインポートファイルを検索します

静的な設定ファイル
STATICFILES_DIRS = [
os.path.join(BASE_DIRは、 '静的')は、#は、あなたの静的フォルダのパスである
os.path.join(BASE_DIR、 'static1')、
os.path.join(BASE_DIR、「STATIC2 「)]

PS:(ファイルのプレフィックス静的へのパスがある場合)htmlファイルのプレフィックス内の着信リンクが順番に自分の試合にリンクされているすべての静的ファイルパスのリストを見つけるでしょう、すぐに停止404を返すように言葉を見つけることが見つかりません

フォームフォームレビュー

フォームフォームのトリガー・アクションデータを提出するには、2つの方法があります

<input type="submit">
<button></button>

ORMターゲットアドレスデータが提出され
、アクション提出アドレス属性制御
1.完全なパスを

<form action="http://127.0.0.1:8000/login/",method="post"> # method不写默认是get请求

ポスト要求に、オフ書かれた設定ファイルのミドルウェアの設定を覚えています。それ以外の場合は新聞イエローページ

2.書き込みのみパスのサフィックス

<form action="/login/">

3.ない書き込み(現在のパスにデフォルトの提出)

デフォルトでは、リクエストフォームフォームを取得することです

フロントエンド上の要求のモードに応じて、戻り情報

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css">
    <script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>

</head>
<body>

<div class="container">
    <div class="'row">
        <h1 class="text-center">登录页面</h1>
        <div class="col-md-6 col-md-offset-3">
            <form action="" method="post">
                <p>username:<input type="text" class="form-control" name="username"></p>
                <p>username:<input type="text" class="form-control" name="username"></p>
                <p>username:<input type="text" class="form-control" name="username"></p>
                <p>password:<input type="password" class="form-control" name ="password"></p>
                <input type="submit" class="btn btn-success">
            </form>
        </div>
    </div>
</div>
</body>
</html>
根据客户端请求方式的不同执行不同的逻辑代码
from django.shortcuts import render,HttpResponse

# Create your views here.
def login(request):
    # print(request)   # request:<WSGIRequest: GET '/login/'>

    # print(request.method)  # 获取的是用户的请求方式,是全大写的字符串
    if request.method == "POST":
        print(request.POST)  # 你就把它当成一个大字典里面存放了客户端post提交的所有的数据
        # <QueryDict: {'username': ['zhang'], 'password': ['123']}>
        print(request.POST.get('username'))  # value虽然是个列表但是获取value的时候拿到却是单个元素
        # 默认只会取value列表里面的最后一个元素
        # <QueryDict: {'username': ['zhang', 'li', 'zhao'], 'password': ['1234']}>

        # 一次性获取value列表里面所有的数据需要用getlist()
        print(request.POST.getlist('username'))  # ['zhang', 'li', 'zhao']
        print(request.POST['password'])  # 不推荐使用该方法获取数据
        return HttpResponse('登录成功!')

    return render(request,'login.html')
'''
获取value列表里面所有的元素需要使用getlist  应用场景:用户的爱好 多选框get只会获取到value列表的最后一个元素
'''
  # print(request.environ)
    '''
{'ALLUSERSPROFILE': 'C:\\ProgramData',
'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming',
'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files',
'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files',
'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files',
'COMPUTERNAME': 'WIN-KIJ962UBO3B',
'COMSPEC': 'C:\\windows\\system32\\cmd.exe',
'DJANGO_SETTINGS_MODULE': 'day52.settings',
'FP_NO_HOST_CHECK': 'NO', 
'HOMEDRIVE': 'C:',
'HOMEPATH': '\\Users\\Administrator', 
'LOCALAPPDATA': 'C:\\Users\\Administrator\\AppData\\Local', 
'LOGONSERVER': '\\\\WIN-KIJ962UBO3B',
'NUMBER_OF_PROCESSORS': '4',
'OS': 'Windows_NT', 
'PATH': 'G:\\python36;G:\\python36\\Scripts;G:\\Python27;G:\\Python27\\Scripts;G:\\Python27\\Scripts;G:\\python36\\Scripts;C:\\windows\\system32;C:\\windows;C:\\windows\\System32\\Wbem;C:\\windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Users\\Administrator\\Desktop\\new 1.py;G:\\sub3;G:\\MYSQL\\bin;G:\\Git\\cmd;G:\\Git\\mingw64\\bin;G:\\Git\\usr\\bin;G:\\python36\\lib\\site-packages\\numpy\\.libs;G:\\python36\\lib\\site-packages\\numpy\\.libs', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 69 Stepping 1, GenuineIntel',
'PROCESSOR_LEVEL': '6',
'PROCESSOR_REVISION': '4501',
'PROGRAMDATA': 'C:\\ProgramData',
'PROGRAMFILES': 'C:\\Program Files',
'PROGRAMFILES(X86)': 'C:\\Program Files (x86)',
'PROGRAMW6432': 'C:\\Program Files', 
'PSMODULEPATH': 'C:\\windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\',
'PUBLIC': 'C:\\Users\\Public',
'PYCHARM_HOSTED': '1',
'PYCHARM_MATPLOTLIB_PORT': '49203',
'PYTHONIOENCODING': 'UTF-8', 
'PYTHONPATH': 'G:\\PyCharm 2018.1.4\\helpers\\pycharm_matplotlib_backend;G:\\Python代码日常\\day52'
'PYTHONUNBUFFERED': '1',
'SESSIONNAME': 'Console',
'SYSTEMDRIVE': 'C:', 
'SYSTEMROOT': 'C:\\windows',
'TEMP': 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp',
'TMP': 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp',
'USERDOMAIN': 'WIN-KIJ962UBO3B',
'USERNAME': 'Administrator',
'USERPROFILE': 'C:\\Users\\Administrator',
'WINDIR': 'C:\\windows',
'WINDOWS_TRACING_FLAGS': '3',
'WINDOWS_TRACING_LOGFILE': 'C:\\BVTBin\\Tests\\installpackage\\csilogfile.log',
'RUN_MAIN': 'true',
'SERVER_NAME': 'WIN-KIJ962UBO3B', 
'GATEWAY_INTERFACE': 'CGI/1.1',
'SERVER_PORT': '8000', 
'REMOTE_HOST': '', 
'CONTENT_LENGTH': '', 
'SCRIPT_NAME': '', 
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'WSGIServer/0.2',
'REQUEST_METHOD': 'GET', 
'PATH_INFO': '/login/', 
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'CONTENT_TYPE': 'text/plain',
'HTTP_HOST': '127.0.0.1:8000', 
'HTTP_CONNECTION': 'keep-alive', 
'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate,
br', 'HTTP_ACCEPT_LANGUAGE': 'zh-CN,zh;q=0.9,en;q=0.8',
'HTTP_COOKIE': 'csrftoken=YN8zgrVrZ4rrIZpWwFmyKY6yp2ggTCaUsDT4HJYUn36OY7Ijk7LpGTHtKbNML8EB',
'wsgi.input': <_io.BufferedReader name=656>,
'wsgi.errors': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>,
'wsgi.version': (1, 0), 'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.multithread': True, 
'wsgi.multiprocess': False,
'wsgi.file_wrapper': <class 'wsgiref.util.FileWrapper'>}
    '''

pycharm MYSQLデータベース接続

直接地図上に:

データベース内のデータが更新されると同時に削除達成することができます。

Djangoの接続構成データベースMYSQL

設定]> [データベース]

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),    }}

    django连接数据库
    1.需要修改配置文件
    
# 修改为:
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'day54',
                'HOST':'127.0.0.1',
                'PORT':3306,
                'USER':'root',
                'PASSWORD':'123'
            }
        }
        ps:键必须都是大写
            
2.告诉django用pymysql替换它默认mysqldb模块连接数据库
        方式1:在你的项目文件夹下面的__init__.py
        方式2:也可以在你的应用文件夹下面的__init__.py
        
        # 固定写法
        import pymysql
        pymysql.install_as_MySQLdb()  # 告诉django用pymysql代替mysqldb连接数据库

DjangoのORM

ORMは何ですか?

リレーショナルマッピングオブジェクト
クラス「」「表
」「オブジェクト」テーブルレコードの
属性「オブジェクト」、「レコードに対応するフィールド値

DjangoのORMは自動的にライブラリの作成を支援することはできませんが、自動的にテーブルを作成することができます
ヒント:ライブラリの使用上のDjangoプロジェクトには、複数のDjangoのプロジェクトライブラリを使用していないが

from django.db import models

# Create your models here.
class User(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=16)  

データベースの移行コマンド

次のコマンドは、端末ノックをcmdを

# 数据库迁移(同步)命令(******)
python3 manage.py makemigrations  # 将你的数据库变动记录到一个小本本上(并不会帮你创建表)
python3 manage.py migrate         # 将你的数据库变动正在同步到数据库中

おすすめ

転載: www.cnblogs.com/zhangchaocoming/p/11921184.html