网站配置
- 上线环境中,在mysite/settings.py下 debug模式关闭,并且在allowed_hosts中填写主域名,这样才能通过域名访问到网站。
- 所有app需要注册在installed_apps下。
- 需要更改数据库设置的话在settings.py下的:databases
- 如需更嗨语言为汉语:LANGUAGE_CODE设置为’zh-hans’;时区设置为东八区:‘Asia/Shanghai’
数据库选择
主要在mysql和sqlite中 选择,sqlserver暂不考虑。(采用user用户数据插入实验)
- 几百条数据时sqlite有优势;
- 上千条数据时,相差不大,mysql小优势胜出;
- 上万数据时,mysql优势明显,sqlite速度慢上近十倍;
- sqlserver和mysql性能相差不大;
网站配置
- 上线环境中,在mysite/settings.py下 debug模式关闭,并且在allowed_hosts中填写主域名,这样才能通过域名访问到网站。
- 所有app需要注册在installed_apps下。
- 需要更改数据库设置的话在settings.py下的:databases
- 如需更嗨语言为汉语:LANGUAGE_CODE设置为’zh-hans’;时区设置为东八区:‘Asia/Shanghai’
数据库选择
主要在mysql和sqlite中 选择,sqlserver暂不考虑。(采用user用户数据插入实验)
- 几百条数据时sqlite有优势;
- 上千条数据时,相差不大,mysql小优势胜出;
- 上万数据时,mysql优势明显,sqlite速度慢上近十倍;
- sqlserver和mysql性能相差不大;
数据层
一:数据模型类models.MODEL
- class Meta:Model 元数据就是 “不是一个字段的任何数据” – 比如排序选项, admin 选项等等.
- 常用的数据类型
- 短文本:models.CharField(max_length=300)
- 长文本:models.TextField()
- 时间类型:models.DateTimeField(default = timezone.now)
- 外键:models.ForeignKey(User, related_name=“bolg_posts”)
二:根据MODEL建立数据库表
- 在project目录下(如mysite/)执行:python manage.py makemigrations
- 上述命令会自动在数据模型model所在的app目录下创建migrations文件夹,并且翻译model为数据库可识别形式;
- 上述命令的功能是创建数据库表,表名为:appname_modelname
- id字段自动生成为主键
二:建立视图函数views.py
实例:
from django.shortcuts import render, get_object_or_404
from .models import BlogArticles
def blog_title(request):
blogs = BlogArticles.objects.all()
return render(request, "blog/titles.html", {"blogs":blogs})
def blog_article(request, article_id):
#rticle = BlogArticles.objects.get(id=article_id)
article = get_object_or_404(BlogArticles, id=article_id)
pub = article.publish
return render(request, "blog/content.html", {"article":article, "publish":pub })
- render()的作用是将数据渲染到指定模板上
- request是必传参数
创建HTML模板
一个简单模板
{% extends "base.html" %}
{% block title %}blog titles{% endblock %}
{% block content %}
<div class="row text-center vertical-middle-sm">
<h1>我的博客</h1>
</div>
<div class="row">
<div class="col-xs-12 col-md-8">
<ul>
{% for blog in blogs %}
<li><a href="{{ blog.id }}">{{ blog.title }}</a></li>
{% endfor %}
</ul>
</div>
<div class="col-xs-6 col-md-4">
<h2>广告</h2>
<p>跟老齐学:www.itdiffer.com</p>
<img width="200px" src="http://img1.cache.netease.com/catchpic/B/B7/B72167D1B28CAD51AC801BAF79317DE4.jpg">
</div>
</div>
{% endblock %}a
- {{ blog.title }}双大括号表示这是对象的引用数据,否则只会照样输出。
- for语句:
{% for blog in blogs %}
<li><a href="{{ blog.id }}">{{ blog.title }}</a></li>
{% endfor %}
- if语句:
从零开撸Django
第一步创建项目:
django-admin startproject mysite (启动python manage.py runserver)
第二步创建项目应用:
python manage.py startapp blog(Pycharm有一个非常实用的快捷键:option+r,可直接进入manage.py的命令窗口)
第三步
在Django的配置文件中进行注册,注册名为应用名,至此一个app有了!
第四步
开始为这个空app写点东西,比如一个博客。首先你得心中有博客的数据类型。博客我主要设置四个参数:博文/作者/标题/发布时间,即title,auther,body,publish;Django的数据类型类都必须继承django.db里的models.MODEL类
models.TextField()
models.CharField()
models.DateTimeField()
models.ForeignKey()映射
第五步
Django采用ORM对象关系映射,数据类型通过migrate转为sql语句进行实际上的创建。
python manage.py makemigrations(根据model类以sql语句形式创建数据库表)
python manage.py migrate(真正创建数据库)
至此,数据库有了,数据对象也有了。
第六步:
博客需要发布文章,新手入门先复用Django自带的管理功能发布文章。使用自带的功能首先需要创建超级博客需要发布文章,新手入门先复用Django自带的管理功能发布文章。使用自带的功能首先需要创建超级用户用户:python manage.py createsuperuser.
进入Django自带的管理面板中是看不到我们自建的blog的model数据类型的,需要在自带系统里进行注册。注册方式:在应用的admin文件中引入django.contrib库中的admin类,然后注册:adminn.site.registe(BlogArticles)
数据层
一:数据模型类models.MODEL
- class Meta:Model 元数据就是 “不是一个字段的任何数据” – 比如排序选项, admin 选项等等.
- 常用的数据类型
- 短文本:models.CharField(max_length=300)
- 长文本:models.TextField()
- 时间类型:models.DateTimeField(default = timezone.now)
- 外键:models.ForeignKey(User, related_name=“bolg_posts”)
二:根据MODEL建立数据库表
- 在project目录下(如mysite/)执行:python manage.py makemigrations
- 上述命令会自动在数据模型model所在的app目录下创建migrations文件夹,并且翻译model为数据库可识别形式;
- 上述命令的功能是创建数据库表,表名为:appname_modelname
- id字段自动生成为主键
二:建立视图函数views.py
实例:
from django.shortcuts import render, get_object_or_404
from .models import BlogArticles
def blog_title(request):
blogs = BlogArticles.objects.all()
return render(request, "blog/titles.html", {"blogs":blogs})
def blog_article(request, article_id):
#rticle = BlogArticles.objects.get(id=article_id)
article = get_object_or_404(BlogArticles, id=article_id)
pub = article.publish
return render(request, "blog/content.html", {"article":article, "publish":pub })
- render()的作用是将数据渲染到指定模板上
- request是必传参数
创建HTML模板
一个简单模板
{% extends "base.html" %}
{% block title %}blog titles{% endblock %}
{% block content %}
<div class="row text-center vertical-middle-sm">
<h1>我的博客</h1>
</div>
<div class="row">
<div class="col-xs-12 col-md-8">
<ul>
{% for blog in blogs %}
<li><a href="{{ blog.id }}">{{ blog.title }}</a></li>
{% endfor %}
</ul>
</div>
<div class="col-xs-6 col-md-4">
<h2>广告</h2>
<p>跟老齐学:www.itdiffer.com</p>
<img width="200px" src="http://img1.cache.netease.com/catchpic/B/B7/B72167D1B28CAD51AC801BAF79317DE4.jpg">
</div>
</div>
{% endblock %}a
- {{ blog.title }}双大括号表示这是对象的引用数据,否则只会照样输出。
- for语句:
{% for blog in blogs %}
<li><a href="{{ blog.id }}">{{ blog.title }}</a></li>
{% endfor %}
- if语句:
总结
从零开撸Django
第一步创建项目:
django-admin startproject mysite (启动python manage.py runserver)
第二步创建项目应用:
python manage.py startapp blog
第三步
在Django的配置文件中进行注册,注册名为应用名,至此一个app有了!
第四步
开始为这个空app写点东西,比如一个博客。首先你得心中有博客的数据类型。博客我主要设置四个参数:博文/作者/标题/发布时间,即title,auther,body,publish;Django的数据类型类都必须继承django.db里的models.MODEL类
models.TextField()
models.CharField()
models.DateTimeField()
models.ForeignKey()映射
第五步
Django采用ORM对象关系映射,数据类型通过migrate转为sql语句进行实际上的创建。
python manage.py makemigrations(根据model类以sql语句形式创建数据库表)
python manage.py migrate(真正创建数据库)
至此,数据库有了,数据对象也有了。
第六步:
博客需要发布文章,新手入门先复用Django自带的管理功能发布文章。使用自带的功能首先需要创建超级博客需要发布文章,新手入门先复用Django自带的管理功能发布文章。使用自带的功能首先需要创建超级用户用户:python manage.py createsuperuser.
进入Django自带的管理面板中是看不到我们自建的blog的model数据类型的,需要在自带系统里进行注册。注册方式:在应用的admin文件中引入django.contrib库中的admin类,然后注册:adminn.site.registe(BlogArticles)