您的位置:首页 > 编程语言 > Go语言

第三章 django基础知识

2017-05-30 16:06 393 查看
慕课网《强力django+杀手级xadmin 打造上线标准的在线教育平台》 学习笔记

本章内容:

django目录结构

django快速搭建

urls.py

views.py

model.py

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 pymysql
pymysql.install_as_MySQLdb()


然后执行:

python manage.py makemigrations
python manage.py migrate


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

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

配置apps.message.views.py

from django.shortcuts import render

def getForm(request):
return render(request, 'message_form.html')


配置urls.py

from django.conf.urls import url
from django.contrib import admin
from apps.message.views import getForm

urlpatterns = [
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 makemigrations
python 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"),
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: