Django初体验——搭建简易blog
前几天在网上看到了篇采用Django搭建简易博客的视频,好奇心驱使也就点进去学了下,毕竟自己对于Django是无比敬畏的,并不是很了解,来次初体验。
本文的操作环境:ubuntu、python2.7、Django1.8.6、Pycharm5。其实自从使用了ubuntu之后就很神奇的喜欢上了它,真的用起来方便很多。
1.Django项目文件并创建blog应用
(1)可以在终端中建立Django项目,使用django-admin startproject ...直接上图:
建立blog应用:
(2)在pycharm中建立Django项目
下载安装Pycharm,选择new project,建立项目直接上图:
这样就建立好了一个项目,其实相对于vim,选取pycharm更加方便,它的缩进还有自动添加功能真的很棒。
建立好了我们可以看到:
2. 建立一个简单项目
在创建的Django项目中,打开views.py,用到了Html中的简单操作,编写:
from django.shortcuts import render
from django.http import HttpResponse
def hello(request):
return HttpResponse('<h1>hello benben<h2>')
同时,结合正则表达式,可在urls.py中做如下修改:
urlpatterns = [
url(r'^blog/$','blog.views.hello'),
url(r'^admin/', include(admin.site.urls)),
]
打开浏览器,输入:localhost:8000/blog/,回车:
这样对Django的操作有了一个简单的了解。当然结合Html的相关知识,也可以对做一定的修改:
在templates中建立hello.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>hello {{name }}! Age:{{ age|add:2 }}</h1>
<p>2015.11.22 sunday</p>
<p>愿你能做自己喜欢的事儿,过自己喜欢的生活</p>
</body>
</html>
在views做如下修改:
def hello(request):
name = 'benben'
age = 18
return render(request,'hello.html',locals())
打开localhost:8000/blog:
3.models数据库映射
建立一个博客,那么势必是要有作者和文章这两个简单的对象,在models.py中建立:
from django.db import models
# Create your models here.
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField(max_length=18)
class Article(models.Model):
title=models.CharField(max_length=200)
content = models.TextField()
url=models.URLField()
portal = models.ImageField()
author = models.ForeignKey(Author)
在pycharm中tools中选取Run manage.py Task输入migrate,如下图:
在终端中查看建好的数据库:
在这里是sqlite3的原因是在setting.py中:
当然,有需要使用Mysql的朋友也可以在此设置MySql.
4.admin后台管理
自动生成了admin.py,在这里建立之前的两个类Article和Author:
from django.contrib import admin
from blog.models import *
# Register your models here.
admin.site.register(Article)
admin.site.register(Author)
之后运行服务器,在Run manage.py Task中输入syncdb,连接数据库:
输入yes,之后的命名邮箱密码之类的自己设定,打开浏览器,输入localhost:8000/admin,回车:
输入设定的用户和密码:
这样,我们就完成了一个博客的最简单的功能,可以访问后台创建文章:
总的来说,要学的东西还有很多,也算是对Django有了一个简单的认识了。总是在做着自己喜欢的事儿,嗯,想一直坚持下去呢...
- Oracle 12c 多租户专题|12cR2中PDB内存资源管理
- Go语言实现冒泡和快速排序
- CentOS NTP服务器安装与配置
- 从零开始的Spring Security Oauth2(三)
- 详解mysql-bin.000001文件来源以及处理方法
- 【投稿专区】crc校验码的计算
- Spring框架中的设计模式(一)
- go语言base64加密解密的方法
- Oracle 12c ASM专题|Flex磁盘组到底有多Fexible?
- Spring框架中的设计模式(二)
- SQL复习之删除数据库
- SQL复习之查询数据库状态
- 使用Golang语言编写echo程序
- Oracle 12c ASM|专题配额组的配额真的管用吗?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 「高并发通信框架Netty4 源码解读(番外篇)」NIO实现大文件传输
- 「高并发通信框架Netty4 源码解读(七)」NIO通道之Selector选择器
- Python与seo工具脚本,360/搜狗相关搜索词采集源码参考
- 逐行阅读Spring5.X源码(八)Mybatis是如何利用MapperScan完成扫描的?
- KEDA|Kubernetes中基于事件驱动的自动伸缩
- 「高并发通信框架Netty4 源码解读(八)」NIO应用——聊天案例及Reactor线程模式
- 「kafka」kafka-clients,java编写生产者客户端及原理剖析
- 「kafka」kafka-clients,java编写消费者客户端及原理剖析
- Kubernetes:如何自动检测和处理弃用的API
- 逐行阅读Spring5.X源码(九)spring利用CGLIB实现动态代理原理剖析
- 逐行阅读Spring5.X源码(十)spring如何解决循环引用,bean实例化过程源码详解
- 逐行阅读Spring5.X源码(十一)AOP概念、应用、原理
- java当中的线程和操作系统的线程是什么关系?
- 基于OpenCV 的车牌识别
- Redis入坟(六)分布式集群,概念、原理、实操