• 初识django框架


    django框架

    1、框架介绍

      根据第一部分内容介绍,我们可以总结出一个web框架应该包含如下三部分:a.sockect服务、b.根据不同的url调用不同函数(包含逻辑)、c.返回内容(模板渲染)。常见的python WEB框架有tornado(包含如上3部分, Django(上述a部分为第三方的),flask(上述a和c为第三方的)。

    2、Django安装

    一、命令行方式

    命令行创建django项目(首先将cd到django项目欲放置的位置):

     使用方法

    进到要存放的文件夹目录

    启动Django项目:
        命令行方式:
            python manage.py runserver 127.0.0.1:8888
            python manage.py runserver 8888

    目录介绍

    配置文件

      模板文件配置:在python中创建一个django项目后,在项目文件夹下会多一个templates文件夹,主要用于存放html模板文件,若要准确找到引用的html文件,需要在setting文件中对此文件夹路径进行配置。如下:(利用pycharm创建django项目,pycharm会自动帮你创建)

     

    静态文件配置:在使用html模板文件时,其通常会有使用js或css等文件,这些文件称为静态文件,为了使其正常生效,我们也需要在setting文件进行相关配置,如下:

    html文件中引用静态文件的方式如下:

    django入门必学三招

    HttpResponse

    :用于向服务器返回字符串(如启动服务后,在浏览器请求:127.0.0.1:8000/index/后,浏览器显示hello world字符内容)

    from django.conf.urls import url
    from django.contrib import admin
    from django.shortcuts import HttpResponse,render,redirect
    
    def index(request): # 所有跟请求相关的数据,都保存在request
        return HttpResponse("<h1>hello world</h1>")
    
    urlpatterns = [
        # url(r'^admin/', admin.site.urls),
        url(r'^index/', index),
    ]

     (2)render

    :用于渲染html文件,如启动服务后,在浏览器请求:127.0.0.1:8000/login/后,浏览器会显示login.html文件应被渲染出的结果

    urls.py

    此过程中的错误点:

     redirect(具体要跳转的URl)

     

    用django连接数据库,密码登录网站

    def login(request):
        # return HttpResponse("Hello World")
        # 判断request是否是POST方法
        error_msg = ' '
        if request.method == "POST":
            # 定义两个变量接收浏览器POST的数据
            name = request.POST.get("username")
            pwd = request.POST.get("password")
            # 与数据库建立连接
            # conn = pymysql.connect(host="localhost", database="day60", user="root", password="123456", charset="utf8")
            conn = pymysql.connect(**config)
            cursor = conn.cursor()
            # 查询语句,进行密码以及账号的认证
            sql = "SELECT * FROM userinfo WHERE NAME = %s AND pwd = %s;"
            try:
                ret = cursor.execute(sql, [name, pwd])
                if ret:
                    return redirect("http://www.cnblogs.com/jassin-du/p/8270462.html")
                else:
                    error_msg = "用户名密码错误"
            except Exception as e:
                print(e)
    
        return render(request, "login.html", {"key": error_msg})
    
    
    urlpatterns = [
        url(r'^login/', login),
        url(r'^admin/', admin.site.urls),
        # url(r'^$', login),
    ]
    urls.py文件
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>登录</title>
        <link rel="stylesheet" href="../static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
        <link rel="stylesheet" href="/templates/login.html">
        <style>
            body {
                background-color: #eeeeee;
            }
    
            #login-form {
                margin-top: 100px;
            }
        </style>
    </head>
    <body>
    <div class="container">
        <div class="row">
            <form id="login-form" class="form-horizontal col-md-4 col-md-offset-4" action="login.html" method="post">
                <h3 class="text-center">请登录</h3>
                <div class="form-group">
                    <label for="username" class="col-sm-2 control-label">账号</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="username" placeholder="账号" name="username">
                    </div>
                </div>
                <div class="form-group">
                    <label for="inputPassword" class="col-sm-2 control-label">密码</label>
                    <div class="col-sm-10">
                        <input type="password" class="form-control" id="inputPassword" placeholder="Password" name="password">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10">
                        <div class="checkbox">
                            <label>
                                <input type="checkbox">记住我
                            </label>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10">
                        <button type="submit" class="btn btn-primary btn-block">登录</button>
                        <p style="color: red">{{key}}</p>
                    </div>
                </div>
            </form>
        </div>
    </div>
    <script src="../static/jquery-3.2.1.min.js"></script>
    </body>
    </html>
    HTML文件
    """
    Django settings for jgo项目 project.
    
    Generated by 'django-admin startproject' using Django 1.11.8.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/1.11/topics/settings/
    
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/1.11/ref/settings/
    """
    
    import os
    
    
    
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = '7(_h_umn&5&k2u60h@_=-*k2@28d+!g)#pab2vqr*6v+gt0bha'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    #
    ALLOWED_HOSTS = []
    
    
    # Application definition
    
    # 安装的app
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    
    # 中间件
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    # url 路由的某些配置
    ROOT_URLCONF = 'jgo项目.urls'
    
    # 模板相关的
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]
            ,
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    #wsgi服务器网关
    WSGI_APPLICATION = 'jgo项目.wsgi.application'
    
    
    # Database
    # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
    
    # 数据库相关
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    
    
    # Password validation
    # https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
    
    # 认证相关文件
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
    
    
    # Internationalization
    # https://docs.djangoproject.com/en/1.11/topics/i18n/
    
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'UTC'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.11/howto/static-files/
    
    # 静态文件(css 文件和 js文件) 存放的实际位置
    STATIC_URL = '/static/'
    
    # 静态文件(css文件和js文件) 存放的实际位置
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR,"static"),
        # os.path.join(BASE_DIR,"css"),
    ]
    settings文件
  • 相关阅读:
    Android系统移植与驱动开发概述
    MySQL查看数据库安装路径
    GOOGLE HACK 语法
    django中orm多表查询,减少数据库查询操作
    javascript中json字符串对象转化
    centos7关闭图形界面启动系统
    centos 7下安装pycharm专业版
    centos 7 安装pip和pip3
    Centos7安装python3并与python2共存
    centos 7 安装mysql
  • 原文地址:https://www.cnblogs.com/jassin-du/p/8270462.html
Copyright © 2020-2023  润新知