服务器配置

安装django

sudo apt-get install python-django -y

安装mysql(可选)

也可以直接使用sqlite

sudo apt-get install mysql-server-5.6
sudo apt-get install mysql-client-5.6 sudo apt-get install python-mysqldb

测试项目Hello World

在我们的项目根目录下执行:

django-admin startproject HelloWorld

HelloWorld即是我们的项目名称。截图后的目录结构:

xl@xl-Z270-HD3:~/file/code/HelloWorld$ tree
.
└── HelloWorld
├── HelloWorld
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py 2 directories, 5 files

各个文件的作用:

  • HelloWorld: 项目的容器
  • manage.py: 命令行工具,用于和Django交互
  • HelloWorld/init.py:空文件,告诉python,该目录是一个Python包
  • HelloWorld/settings.py : 对该项目的配置文件
  • HelloWorld/urls.py : 该项目的url声明
  • HelloWorld/wsgi.py : 服务器入口

然后,运行服务器:

python manage.py runserver

当服务器运行成功后,就可以访问http://127.0.0.1:8000查看'Welcome to Diango'界面。

添加自己的app

一个Django project下可以有多个App,而一个App就是一个具体的Web应用程序,用来实现具体的功能和完成具体的事项。

可以通过manage.py快速创建一个app:

python manage.py startapp testapp

这样就创建了一个名为testapp的Django App,看看当前目录的变化,在project根目录下会多出一个testapp的目录,其目录结是:

xl@xl-Z270-HD3:~/file/code/HelloWorld/HelloWorld/testapp$ tree
.
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py 1 directory, 7 files

其中:

  • admin.py:用于设置 Django 自带的强大管理后台;
  • apps.py:声明了这个的 App 信息;
  • models.py:用于定义数据模型(数据库表);
  • tests.py:用于单元测试;
  • views.py:用于定义 App 的视图,也就是业务函数。

这包含了一个 Web 应用的后台管理、数据库定义、逻辑视图,在结合项目的路由映射,就是一个 Django App 最基本的结构。

migrations 文件夹目前是一个空的文件夹,其中会记录应用的数据模型迁移的情况。

然后我们需要使用manage.py文件的migrate 和 makemigrations 命令,创建一些默认的数据库表:

python manage.py migrate

运行命令,会显示将会对数据库进行很多个表的实例化和迁移.

然后,我们将testapp添加到HelloWorld项目的App列表中,即在settings.py文件中找到INSTALLED_APPS,将testapp加到最后面。

接着,可以使用 makemigrations 命令来检测项目中数据模型的数据迁移变化:

python manage.py makemigrations testapp

创建超级用户

我们可以为项目创建一个超级管理员,通过这个账户,可以快速使用 Django 强大的后台功能,对数据模型进行管理:

python manage.py createsuperuser

根据提示输入用户名、邮箱和密码,一个超级用户就创建好了。我们可以运行项目,访问http://127.0.0.1:8000/admin路径看看:

python manage.py runserver

可以使用刚刚创建的管理员账户登录。

修改我们的网页

修改视图文件

编辑testapp目录下views.py,加入以下内容:

from django.http import HttpResponse

def hello(request):
return HttpResponse("Hello world!")

在这里,我们定义了一个hello视图。

注意, 一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。为了使一个Python的函数成为一个Django可识别的视图,它必须满足这两个条件。

进行URL配置

为了告诉服务器我们配置的视图,需要进行URL配置。在HelloWorld目录下的urls.py中添加:

from testapp.views import hello

urlpatterns = [
...
url(r'^hello/$', hello),
]

这时,我们再重新启动服务器,访问 http://127.0.0.1:8000/hello/,就可以看到不一样的结果了。

编写一个动态网页

上面的例子每次返回的都是一样的内容,它可以算是一个静态网页。但其实使用python每次返回不同的内容,就可以算是动态网页了。

我们把views.py中的添加一个视图:

import time

def current_time(request):
return HttpResponse("Current time is: "+time.strftime('%Y-%m-%d %H:%M:%S'))

同样在urls.py中配置URL:

from testapp.views import current_time

urlpatterns = [
......
url(r'^current_time/$', current_time),
]

这时,我们再重新启动服务器,访问 http://127.0.0.1:8000/current_time/,就可以看到每次都不一样的网页了。

数据库

与数据库相关的代码一般写在models.py中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码。

创建数据表

我们打开 testapp/models.py 文件,修改其中的代码如下:

from django.db import models

class Test(models.Model):
a = models.CharField(max_length=30)
b = models.IntegerField()

然后,同步一下数据库。(默认使用sqlite3数据库,无需做任何配置)

先进入到manager.py所在的文件夹下,输入以下命令:

# Django 1.6.x 及以下
python manage.py syncdb # Django 1.7 及以上的版本需要用以下命令
python manage.py makemigrations
python manage.py migrate

Django生成了一系列的表,也包括我们在testapp/models.py中定义的testapp_test这个表。

插入和查询数据

作为测试,我们可以调起Django的shell:

xl@xl-Z270-HD3:~/file/code/HelloWorld/HelloWorld$ python manage.py shell
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from testapp.models import Test
>>> Test.objects.create(a="zhangsan", b=24)
<Test: Test object>
>>> Test.objects.get(a="zhangsan")
<Test: Test object>
>>>

注意这里使用.objects.get() 方法查询出来的对象都是显示一个结构体。

具体操作可以参考https://code.ziqiangxuetang.com/django/django-models.html

django+sqlite3进行web开发(一)的更多相关文章

  1. 【Django】Python web开发:几个模板系统的性能对比(转)

    http://blog.chedushi.com/archives/910 结论: 点评一下吧.django就是个渣,不多废话了.webpy的代码很简洁,可惜速度太慢了.bottle看起来快一点,不过 ...

  2. django+sqlite进行web开发(二)

    模板 前面的例子中,我们是直接将HTML写在了Python代码中,这种写法并不可取.我们需要使用模板技术将页面设计和Python代码分离. 模板通常用于产生HTML,但是Django的模板也能产生任何 ...

  3. [python] python django web 开发 —— 15分钟送到会用(只能送你到这了)

    1.安装python环境 1.1 安装python包管理器: wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py   1. ...

  4. 使用eclipse搭建第一个python+Django的web开发实例

    python+Django的web开发实例   一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的 ...

  5. Python Web开发:Django+BootStrap实现简单的博客项目

    创建blog的项目结构 关于如何创建一个Django项目,请查看[Python Web开发:使用Django框架创建HolleWorld项目] 创建blog的数据模型 创建一个文章类 所有开发都是数据 ...

  6. [Python] 利用Django进行Web开发系列(一)

    1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...

  7. [Python] 利用Django进行Web开发系列(二)

    1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...

  8. Django web 开发指南 no such table:

    在学习django web开发指南时,发布新博客点击save后会有error提示:no such table balabalabala... 百度了一下说重新运行manage.py syncdb 就可 ...

  9. Django web开发【5】 实现标签功能

    标签tag在很多web2.0应用中都很常见,标签其实就是关联某些信息的一个关键字.打标签实际上就是给内容分配标签的过程,它通常由作者或者用户实现.标签之所有这么流行是因为它允许用户对自己创建的博客.图 ...

随机推荐

  1. Codeforces.1029D.Isolation(DP 分块)

    题目链接 \(Description\) 给定长为\(n\)的序列\(A_i\)和一个整数\(K\).把它划分成若干段,满足每段中恰好出现过一次的数的个数\(\leq K\).求方案数. \(K\le ...

  2. scss 入门基础

    在一个项目中,样式是必不可少的一部分,而对于一个完整的项目来说是有个基准色调的.在项目需求变化不大的情况下,可以直接在css中写这些颜色值之类的东西.但是如果遇到一个朝令夕改的领导或者甲方,那会变得相 ...

  3. SpringCloud微服务实现生产者消费者以及ribbon负载均衡

    一.SpringCloud_eureka_server 1.导入依赖 <dependencies> <dependency> <groupId>junit</ ...

  4. 【redis】分布式锁实现,与分布式定时任务

    如果你还不知道redis的基本命令与基本使用方法,请看 [redis]redis基础命令学习集合 写在前面 redis辣么多数据结构,这么多命令,具体一点,都可以应用在什么场景呢?用来解决什么具体的问 ...

  5. SpringCloud项目中使用Nacos作为配置中心

    参考:https://blog.csdn.net/qq_33619378/article/details/96991237 Nacos-server启动 这里就不说了 新建配置 在Nacos-Serv ...

  6. CentOS7 Zookeeper 安装

    集群部署 192.168.38.6  zk01192.168.38.7  zk02192.168.38.8  zk03 安装zookeeper,必须安装jdk. 1.下载 $ cd /usr/loca ...

  7. Spring事务调用类自己方法失效解决办法和原因

    问题 正常情况下,我们都是在controller里调用service里的方法,这个方法如果需要加事务,就在方法上加上@Transactional,这样是没问题的,事务会生效. 可是如果像下面这样,绕以 ...

  8. linux-centos安装图解及配置IP远程连接

    本次安装使用vm软件的15版本,系统为centos7.6(1810) 系统安装图解>配置IP信息联网>真实机是无线网络状态,虚拟机如何联网>远程工具连接虚拟机 一,vm安装cento ...

  9. MySQL主键与索引的区别和联系

    MySQL主键与索引的区别和联系   关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(Inn ...

  10. Windows安装Nginx需要注意的地方

      在使用 Nginx 之前,首先要三连问,它是什么?用来做什么?为什么用它? 这篇文章很好的解答了上面的问题,并补充了什么是正向代理和反向代理以及区别的知识 https://www.cnblogs. ...