python2.7+django1.10.2

学习链接:https://www.kancloud.cn/wizardforcel/django-chinese-docs-18/98844
学习课程:慕课网
1.创建一个虚拟环境:

sudo pip install virtualenvwrapper
1)创建目录用来存放虚拟环境
    mkdir $HOME/.virtualenvs
2)在~/.bashrc中添加行:
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
3)运行:
    source ~/.bashrc
4)创建python虚拟环境
mkvirtualenv [虚拟环境名称]
workon [虚拟环境名称]
5)退出虚拟环境 离开 deactivate
6)删除
rmvirtualenv [虚拟环境名称]

*创建python3的虚拟环境----python3.6 -m venv {dir name}*

2.安装Django1.10.2:

pip install Django==1.10.2

检查是否安装成功:
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> 

3.创建第一个django项目:

选择任意一个你想存储代码的地方执行以下命令 django-admin.py startproject myblog

最好不要选择放在 Web 服务器的文档根目录下(例如:/var/www)。
将任何 Python 代码放在你的 Web 服务器文档根目录不会是一个好主意,因为这可能会增加人们通过 Web 方式查看到你的代码的风险。这不利于安全。

4.输入:tree查看文档结构

~/.virtualenvs/DjangoTest/code/myblog$ tree
.
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files

manage.py 项目管理器,与项目进行交互的命令行工具集的入口
5.开启服务:

python manage.py runserver
python manage.py runserver 8080
python manage.py runserver 0.0.0.0:8080 (其他机器可以访问你)

6.数据库设置为mysql:

前提已经安装好Mysql数据库,然后执行:pip install MySQL-python
检查MySQLdb是否存在了,然后进入mysql创建数据库:CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

配置mysql ,进入mysite的setting.py:

#以后创建应用要写进这里面
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]



DATABASES = {  
    'default': {  
        'ENGINE': 'django.db.backends.mysql',   
        'NAME': 'myblog',   
        'USER': 'root',   
        'PASSWORD': 'XXXXXX',   
        'HOST': '127.0.0.1',   
        'PORT': '3306',  
    }  
}  

执行:python manage.py migrate  (自动在mysql 中创建表)
进入mysql 
use mysite;
show tables; (检查是否创建表成功 )

*在运行 migrate 命令前可从 INSTALLED_APPS 内随意注释或删除相应的行。

7.创建app:
创建命令:django-admin.py startapp blog
修改setting里面:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

8.编写urls.py和blog里面的views

在blog里面创建一个urls.py,复制myblog里面的urls.py的内容进去并修改:
# encoding:utf-8

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index),#约素一个url #子目录
]

在myblog里面的urls.py如下:
from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/', include('blog.urls')), #父目录
]

9.Django 中的models对应数据库中的一张表,以类的形式表现出来,django 中,我们以创建类的形式创建数据表。操作类就可以操作数据库。实现量ORM对象关系映射,这里实现量对象与数据库的映射。在django里面不需要编写sql语句数据库
models的编写:

from __future__ import unicode_literals
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=32,default='title')
    content = models.TextField(null = True)

创建完models后,执行命令:

python manage.py makemigrations app(名) (准备,如果不叫app名,默认该项目下所有都生成该数据)
python manage.py migrate (迁移)

生成数据表
在数据库中插入一组数据:

insert into blog_article(id,title,content) values(1,"haha",'lllll');

继续在views.py中编写代码:

# encoding:utf-8
from django.shortcuts import render  #xuan ran
from django.http import HttpResponse
from . import models

def index(request):
    article  = models.Article.objects.get(pk=1)#pk是主键,可以改成其他字段,就是获取pk为1的那个字段
    return render(request,'index.html',{'article':article})#请求,网页模板,网页模板的参数

修改index.html,可以直接以对象的形式传入:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello hahaha</title>
</head>
<body>
<h1>{{article.title}}</h1>
<h3>{{article.content}}</h3>
</body>
</html>

10.创建超级用户:

python manage.py createsuperuser

11.在models下面添加如下,用于返回对象题目在页面:

    def __unicode__(self):
        return self.title

12.直接上代码了:

编写index.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello hahaha</title>
</head>
<body>
<h1>
    <a href="{% url 'blog:edit_page' 0%}">新文章</a>
</h1>

{% for article in articles %}
    <a href="{% url 'blog:article_page' article.id %}">{{ article.title }}</a>
    <br/>
{% endfor%}
</body>
</html>
编写article_page.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Article_page</title>
</head>
<body>
<h1>{{article.title}}</h1>
<br/>
<h3>{{article.content}}</h3>
<br/><br/>
<a href="{% url 'blog:edit_page' article.id %}">修改文章</a>
</body>
</html>
编写edit_page.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Edit page</title>
</head>
<body>
<form action="{% url 'blog:edit_action'  %}" method="POST">
    {% csrf_token %}
    {% if article %}
    <input type="hidden" name="title" value="{{article.id}}"/>
    <label>
        文章标题
        <input type="text" name="title" value="{{article.title}}"/>
    </label>
    <br/>
    <label>
        文章内容
        <input type="text" name="content" value="{{article.content}}"/>
    </label>
    <br/>
    {% else %}
    <input type="hidden" name="title"/>
    <label>
        文章标题
        <input type="text" name="title"/>
    </label>
    <br/>
    <label>
        文章内容
        <input type="text" name="content"/>
    </label>
    <br/>
    {% endif %}
    <input type="submit" value="提交"/>
</form>

</body>
</html>
编写blog/urls.py:
# encoding:utf-8

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index),#约素一个url
    url(r'^article/(?P<article_id>[0-9]+)$',views.article_page,name='article_page'),
    url(r'^edit/(?P<article_id>[0-9]+)$',views.edit_page,name='edit_page'),
    url(r'^edit/action$',views.edit_action,name='edit_action'),
]
编写views.py:
# encoding:utf-8
from django.shortcuts import render  #xuan ran
from django.http import HttpResponse
from . import models

def index(request):
    articles  = models.Article.objects.all() #返回的是django内置的一个集合,简单理解是列表
    return render(request,'index.html',{"articles":articles})#请求,网页模板,网页模板的参数

def article_page(request,article_id):
    article = models.Article.objects.get(pk=article_id)
    return render(request,'article_page.html',{"article":article})

def edit_page(request,article_id):
    #后台接受表单的过程就是接受http夹带的数据信息
    if str(article_id) == '0':
        return render(request,'edit_page.html')
    article = models.Article.objects.get(pk=article_id)
    return render(request,'edit_page.html',{'article':article})


def edit_action(request):
    title = request.POST.get('title','TITLE')
    content = request.POST.get('content','CONTENT')
    article_id = request.POST.get('article_id','0')
    if article_id == '0':
        models.Article.objects.create(title=title,content=content)
        articles = models.Article.objects.all()
        return render(request,'index.html',{"articles":articles})

    article = models.Article.objects.get(pk=article_id)
    article.title = title
    article.content = content
    article.save()
    return render(request,'article_page.html',{"article":article})

简易博客初步完成了


django 中的知识:


创建app中的templates要多创建一层子目录,方便以后的项目命名

Django rest framework 序列化
安装pip install djangorestframework
相关文档:http://www.jianshu.com/p/9d6a75855e5f

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容