장고의 구성 파일, 추가 또는 삭제 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, JS 링크에서 HTML 파일 템플릿 정적 폴더 접두사 해당 가져 오기 파일을 찾을 수 있습니다,

정적 구성 파일
STATICFILES_DIRS =
os.path.join (BASE_DIR는, '고정')는 # 1 정적 폴더 경로이다
os.path.join (BASE_DIR 'static1')
os.path.join (BASE_DIR 'static2 ')]

추신 : (파일 접두사 정적 경로가있는 경우) HTML 파일 접두사 내에서 들어오는 링크가 차례로 자신의 일치와 연결되어있는 모든 정적 파일 경로의 목록을 찾을 즉시 중지 404를 반환하는 단어를 찾을 수없는

양식 검토를 형성

양식 트리거 동작은 데이터를 전송하는 방법은 두 가지가있다 형성

<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 데이터베이스 연결

직접지도 :

동시에 삭제 업데이트되는 데이터베이스에있는 데이터를 얻을 수있다;

장고 연결 구성 데이터베이스 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连接数据库

장고의 ORM

ORM은 무엇인가?

관계형 매핑 객체
클래스 "" "표
" "개체"테이블 레코드
속성 "객체", "필드 값은 기록에 해당하는

장고 ORM가 자동으로 라이브러리를 만들 수 있도록 할 수는 없지만 자동으로 테이블 만들 수 있습니다
팁 : 라이브러리의 사용에 장고 프로젝트를 여러 장고 프로젝트 라이브러리를 사용하지 않는

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