第三章 django基础知识

来源:互联网 发布:家庭ok软件 编辑:程序博客网 时间:2024/04/29 08:21

慕课网《强力django+杀手级xadmin 打造上线标准的在线教育平台》 学习笔记


本章内容:

  1. django目录结构
  2. django快速搭建
  3. urls.py
  4. views.py
  5. model.py
  6. templates

django 目录

  • 各个目录及文件讲解
    这里写图片描述
  • django命令
    • tools -> Run manage.py Task
    • 新建app: startapp appName

配置数据库DATABASES

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql', #数据库引擎        'NAME': 'testdjango',                 #数据库名        'USER': 'django',                       #用户名        'PASSWORD': '1234',                   #密码        'HOST': '',                           #数据库主机,默认为localhost        'PORT': '',                           #数据库端口,MySQL默认为3306        'OPTIONS': {             'autocommit': True,         },     } }
  • 安装mysql驱动

我用python3的,可以用pymysql驱动,参考这篇
python3使用Django框架连接mysql(python3+Django+MySQL+pymysql)

pip install pymysql

然后在项目配置文件夹中的init.py中添加

import pymysqlpymysql.install_as_MySQLdb()

然后执行:

python manage.py makemigrationspython manage.py migrate

这样就自动创建好了一些默认的数据库表

配置让url能够访问留言板页面

  • 配置apps.message.views.py
from django.shortcuts import renderdef getForm(request):    return render(request, 'message_form.html')
  • 配置urls.py
from django.conf.urls import urlfrom django.contrib import adminfrom apps.message.views import getFormurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^form/', getForm),]
  • 通过debug启动
  • 访问http://127.0.0.1:8000/form/
    这里写图片描述

  • 如果提示找不到templates中的模板,则需要配置settings中的TEMPLATS,将模板存放目录的相对路径添加到DIRS中

这里写图片描述

  • 如果没有样式,则再配置静态资源static路径,以便能够访问style.css
    在settings.py中添加STATICFILES_DIRS
STATIC_URL = '/static/'STATICFILES_DIRS = [     os.path.join(BASE_DIR,'static'),]

这里写图片描述

models数据模型的编写

  • 没有orm的数据库操作,比较麻烦又低效

这里写图片描述

  • 在message的models.py中编写一个类
class UserMessage(models.Model):    name=models.CharField(max_length=20,verbose_name='用户名')    email=models.EmailField(verbose_name='邮箱')    address=models.CharField(max_length=100,verbose_name='联系地址')    message=models.CharField(max_length=500,verbose_name='留言信息')    class Meta:        verbose_name='用户留言信息'
  • 在settings中注册message这个新建的app
INSTALLED_APPS = [    'apps.message',   # 注册新的app    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',]
  • 将message中的UserMessage映射到数据库中
python manage.py makemigrationspython manage.py migrate
  • django model的自带类型

    • BooleanField
    • CharField
    • TextField
    • DateTimeField
    • EmailField
    • FileField
    • ImageField
    • IntegerField
    • …………
  • django model中的参数

    • max_length 最大长度
    • verbose_name 别名
    • 可以为空: null=True, blank=True
    • 默认值: default=something
    • primary_key=True 设为主键
  • Meta字段

    • verbose_name=别名
    • verbose_name_plural=大别名
    • db_table 指定数据表的名字
    • ordering=” 查询后的默认排序

保存数据

def getForm(request):    # all_messages=UserMessage.objects.filter(name='bobby')    if request.method == "POST":        name=request.POST.get("name","")        email = request.POST.get("email", "")        address = request.POST.get("address", "")        message = request.POST.get("message", "")        user_message=UserMessage()        user_message.name=name        user_message.email = email        user_message.address = address        user_message.message = message        user_message.save()    # 保存    return render(request, 'message_form.html')

django模板语言

详见Django文档 : http://python.usyiyi.cn/translate/django_182/ref/templates/builtins.html

url配置的一个技巧

  • 每个url最好加上name
url(r'^form/$', getForm, name="go_form"),

在模板中引用

{% url "go_form" %}
  • 关于匹配, 如果是URL只匹配form这个URL,则一定要r’form//结尾,否则可能其他以form开头的URL也会匹配到本URL
url(r'^form/$', getForm, name="go_form"),