Django(二)

from表单提交的注意事项:
    1.form不是from,必须要有active,method
    2.所有获取用户输入的表单都要放在form表单里面,表单标签必须要有 
       name属性
    3.form表单必须要有submit按钮
request.method -----获取用户提交的请求方法(get/post)

request.POST  -------获取POST提交过来的全部数据(字典形式)

基础必会3件套
    1. HttpResponse('OK')
    2. render(request,'login.html')
    3.redirect('URL')

配置数据库(Mysql为例)

如果你不是使用默认的SQLite数据库,那么一些诸如USER,PASSWORD和HOST的参数必须手动指定!下面给出一个基于pymysql操作Mysql数据库的例子

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysite',
        'HOST': '192.168.1.1',
        'USER': 'root',
        'PASSWORD': 'pwd',
        'PORT': '3306',
    }
}

另外在当前根mysite的__init__里面添加一下内容,用来告诉Django该用那个数据库来链接
import pymysql         
pymysql.install_as_MySQLdb()

setting环境设置

在修改settings文件时,请顺便将TIME_ZONE设置为国内所在的时区Asia/Shanghai。
要将应用添加到项目中,需要在INSTALLED_APPS设置中增加指向该应用的配置文件的链接,
官方推荐格式:xxx.apps.PollsConfig
也可以简写成:xxx
默认情况,INSTALLED_APPS中会自动包含下列条目,它们都是Django自动生成的: django.contrib.admin:admin管理后台站点 django.contrib.auth:身份认证系统 django.contrib.contenttypes:内容类型框架 django.contrib.sessions:会话框架 django.contrib.messages:消息框架 django.contrib.staticfiles:静态文件管理框架

创建数据库

Django中通过用ORM来将数据库和python对象联系起来,将程序员与Mysql解耦,所以我们只需要按照ORM的规则创建特定的类就可以直接生成数据库中的表

注意:
在使用非SQLite的数据库时,请务必预先在数据库管理系统的提示符交互模式下创建数据库,你可以使用命令:“CREATE DATABASE database_name;”。Django不会自动帮你做这一步工作。

创建内之后将python代码和数据库联系起来还需要一下操作:
运行python manage.py makemigrations为改动创建迁移记录;
运行python manage.py migrate,将操作同步到数据库。


  • 实际的输出内容将取决于您使用的数据库会有所不同。
  • 表名是自动生成的,通过组合应用名 (polls) 和小写的模型名questionchoice 。 ( 你可以重写此行为。)
  • 主键 (IDs) 是自动添加的。( 你也可以重写此行为。)
  • 按照惯例,Django 会在外键字段名上附加 "_id" 。 (你仍然可以重写此行为。)
  • 生成SQL语句时针对你所使用的数据库,会为你自动处理特定于数据库的字段,例如 auto_increment (MySQL), serial (PostgreSQL), 或integer primary key (SQLite) 。 在引用字段名时也是如此 – 比如使用双引号或单引号。
  • 这些SQL命令并没有在你的数据库中实际运行,它只是在屏幕上显示出来,以便让你了解Django真正执行的是什么。

可以运行python manage.py check命令,它将检查项目中的错误,并不实际进行迁移或者链接数据库的操作

 URL

url()方法可以接收4个参数,其中2个是必须的:regex和view,以及2个可选的参数:kwargs和name

regex不会去匹配GET或POST参数或域名,例如对于https://www.example.com/myapp/,regex只尝试匹配myapp/。对于https://www.example.com/myapp/?page=3,regex也只尝试匹配myapp/

view:当正则表达式匹配到某个条目时,自动将封装的HttpRequest对象作为第一个参数,正则表达式“捕获”到的值作为第二个参数,传递给该条目指定的视图view。如果是简单捕获,那么捕获值将作为一个位置参数进行传递,如果是命名捕获,那么将作为关键字参数进行传递

kwargs:任意数量的关键字参数可以作为一个字典传递给目标视图

name:对你的URL进行命名,让你能够在Django的任意处,尤其是模板内显式地引用它。这是一个非常强大的功能,相当于给URL取了个全局变量名,不会将url匹配地址写死
原文地址:https://www.cnblogs.com/dingyutao/p/9174513.html