选取Django MySQL Apache Linux创制轻便的博客分分快三

作者:电脑系统
  • 编辑zzb/views

    # Create your views here. from django.http import HttpResponse def index(request):

        return HttpResponse('hello,world')
    

 

  •  应用的目录结构

 

│   └── __init__.py(有那个文件表明它是叁个模块卡塔尔

  • 修改blog下的url(注意url后面的/问题),引入include

    from django.conf.urls import url,include from django.contrib import admin

    urlpatterns = [

    url(r'^admin/', admin.site.urls),
    url(r'^blog/',include('zzb.urls') ),
    

    ]

  • 在app(zzb)下新建urls.py 

    from django.conf.urls import url from . import views urlpatterns = [

    url(r'^index/$',views.index),
    

    ]

  • 启航Apache,关闭防火墙

  • 生机勃勃对景况在templates下开创以使用为名的目录(化解冲突)后,Django不能读取放在里面包车型大巴html文件,(很迷惑,不了解为啥)
  • 修改数据私下认可显示的称号(改了今后不知情为何时而有效时而无效)

  举例:{{ list_nums | length}}    表示list的长度

├── migrations 数据迁移模块

  html文件放在zzb/templates/zzb下,然则Django未有搜索这一索引,只可以被迫把index.html放在templates目录下

  成效:1卡塔 尔(英语:State of Qatar)调节和测量试验职业  2卡塔尔国测量检验未知的形式

如有错误,请商议建议

创造第一个连串

from django.conf.urls import url

from django.contrib import admin

import zzb.views as bv

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/',bv.index),
]

  article_page.html

 

 

2017-07-29/22:26:38

 

  • 张开浏览器,输入192.168.230.135/blog/index

接受过滤器简化edit_page.html

 

  1. [root@localhost ~]#python manage.py createsuperuser
  2. 进入192.168.230.129/admin登录
  3. 转移语言,修正settings.py中LANGUAGE_CODE= ‘zh_Hans’(小编的设想机改了就报错,然后就没去改)
  4. 配置利用
  • 品种项目目录结构.

    *[root@localhost ~]#* python -m django –-version   

Models(模型)

  • 有关admin页面未有css样式的驱除办法 

  过滤器归于django模板语言,  校勘模板中的变量,从而呈现不相同内容

 

  • b) 下载源码(实行效用更加高),踏向源码目录奉行[root@localhost ~]#python setup.py install

可直接在admin中管理数据库

 

    1. 去djando的解压包里的/doc/howto/static-files中查阅支持文书档案,找到消亡办法

 在结尾增多:

 

进入admin:

├── manage.py与项目张开相互的授命行工具集的进口(项目微处理机卡塔尔

<DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Edit Page</title>
    </head>
    <body>
        <form action="{% url 'zzb:edit_action' %}" method="post">
{% csrf_token %}
<!--上面一行用于跨站请求伪造保护措施-->
{% if article %}
<!--如果有该文章-->
            <input type="hidden" name="article_id" value="{{ article.id }}">
<!--传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="article_id" value="0">
<label>文章标题
                <input type="text" name = "title" />
            </label>
            <br/>
            <label>文章内容
                <input type="text" name = "content" />
            </label>
            <br/>
{% endif %}
            <input type="submit" value="提交"/>
        </form>
    </body>
</html>

什么是django?

写在最后:

 

ALLOWED_HOSTS = ['192.168.230.129']

 

 

<DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Edit Page</title>
    </head>
    <body>
        <form action="{% url 'zzb:edit_action' %}" method="post">
{% csrf_token %}
<!--解决跨站请求伪造问题,POST表单需要添加这句--!>
            <input type="hidden" name="article_id" value="{{ article.id | default:'0'}}">
<!--default过滤器,默认值--!>
            <label>文章标题
                <input type="text" name = "title" value="{{ article.title }}"/>
            </label>
            <br/>
            <label>文章内容
                <input type="text" name = "content" value="{{ article.content }}"/>
            </label>
            <br/>
            <input type="submit" value="提交"/>
        </form>
    </body>
</html>

     4. 执行python manage.py collectstatic

└── myblog项目标四个器皿,包涵项目最宗旨的有的配备(不建议改进名称,会影响配置文件卡塔 尔(阿拉伯语:قطر‎

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
from . import models

def index(request):
    articles = models.Article.objects.all()
    return render(request, 'zzb/index.html', {'articles':articles})

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

def edit_page(request,article_id):
    if str(article_id) == '0':
        return render(request,'zzb/edit_page.html')
    article = models.Article.objects.get(pk=article_id)
    return render(request,'zzb/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 str(article_id) == '0':
#如果article_id为0
        models.Article.objects.create(title=title,content=content)
        articles = models.Article.objects.all()
        return render(request,'zzb/index.html',{'articles':articles})

#如果不为0
    article = models.Article.objects.get(pk=article_id)
    article.title = title
    article.content = content
    article.save()
    return render(request,'zzb/article_page.html',{'article':article})

.├── admin.py  (该使用的后台管理种类布局(django自带叁个后台管理种类,每种应用都有些的计划文件卡塔尔国

 

    vim ~/.vimrc  

 

    hello,world

 

 

    判定安装是或不是成功

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.contrib import admin
from models import Article
# Register your models here.
admin.site.register(Article)

  {{ value | filter }}

 

 

     在MySQL中执行:

  {{ value | filter | filter | filter }} 可叠加

 

 

* *

url配置

    Article.objects.all()

    [root@localhost ~]#python manage.py startapp zzb

views.py中

  • Python有严谨的缩进供给,一个tab设置为4个空格,如上述文书档案有缩进错误,请自行校订

 settings.py

 

    hellow,world

Django tried loading these templates, in this order:

Using engine django:
django.template.loaders.app_directories.Loader: /usr/lib64/python2.7/site-packages/django/contrib/admin/templates/index.html (Source does not exist)
django.template.loaders.app_directories.Loader: /usr/lib64/python2.7/site-packages/django/contrib/auth/templates/index.html (Source does not exist)
django.template.loaders.app_directories.Loader: /var/www/html/blog/zzb/templates/index.html (Source does not exist)
  • 配置wsgi.py,因为运用的不是django自带的服务器,而是apache,若配置相像则无需修改 

    import os

    from django.core.wsgi import get_wsgi_application

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blog.settings")

    application = get_wsgi_application()

├── apps.py  该行使的有的配备,1.9版本后才有。

          改善apache配置文件(点击跳转后续详整) 

views.py配置 *

    ├── urls.py配置页面url

└── views.py 实施响应的逻辑代码所在的模块,决定了采取web的伏乞后什么响应(项目中山高校部分在此边编写卡塔尔

 

 

博客主页面开荒

 

  将她们增添到开机运维项:

 

    只需接纳chkconfig 服务名 on就可以,若想关闭,将on改为off

* *

 

 

目录结构

 

    vi /etc/sysconfig/selinux  把内部的生机勃勃行改为:  SELINUX=disabled  (不实行这一步则会现身二零零三报错),  重启生效

 

 

Python

上网的流水生产线

    ├── settings.py配置文件

*  [root@localhost ~]#*pip install Django==1.10.2

  • 选取根目录下创设models.py,并引进models模块,创设类,世襲models.Model,类就是一张数据表,在类中创制字段

    from future import unicode_literals

    from django.db import models

    # Create your models here. class Article(models.Model):

    title = models.CharField(max_length=32, default='Title')
    content = models.TextField(null=True)
    def _unicode_ (self):
        return self.title
    
  •  浮动数据表

 

 

 

 

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Article Page</title>
</head>
<body>
<h1>{{ article.title }}
</h1>
<h3>{{ article.content }}</h3>
<br/><br/>
<a href="{% url 'zzb:edit_page' article.id %}">修改文章</a>
</body>
</html>
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

   花色的根据地署文件,包蕴了数据库、web应用、时间等各类配置文件

 

  修改settings.py,输入linux本机ip

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#项目的跟目录


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'qkotgzdcj-n!q#1@pwv7cyya!5$cuvqp3d=vrljrbuo48qvr5b'
 #启动项目所必须的安全码


# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
#调试,打开后异常会反馈给用户页面


ALLOWED_HOSTS = ['192.168.230.129']
#只允许外界通过【】内的地址访问


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'zzb',
]
#组成项目的应用,自己创建的应用需加进去

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
#中间件,自带的工具集

ROOT_URLCONF = 'blog.urls'
#url的根文件,指向urls.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
#模板(html文件)配置

WSGI_APPLICATION = 'blog.wsgi.application'
#把myblog当做一个模块


# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

DATABASES = {
    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'blog',
        'USER':'root',
        'PASSWORD':'',
        'HOST':'',
        'PORT':'',
        'OPTIONS':{
            'autocommit':True,
        },
    }
}
#数据库配置,使用其他数据库需改动


# Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]
#密码认证


# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

STATIC_URL = '/static/'
#静态文件的地址
STATIC_ROOT = '/var/www/html/blog/zzb/static/'

  index.html

 

├── tests.py 自动测量检验模块,在这里地编写测量试验脚本(语句卡塔 尔(英语:State of Qatar)

  • 若果现身如下错误,则是绝非平息SELinux,禁止使用后重启可杀绝.

    [root@localhost ~]#python manage.py makemigrations

  •  页面显示数据 

    Title

    {{ article.title }}

    {{ article.content }}

  •  禁用SELinux

  • 开荒页面(192.168.230.129/index) 

      能够经过实践[root@localhost ~]#python manage.py sqlmigrate 应用名 文件id(查看SQL语句)

Admin(自动化数据管理分界面)

 

    2. 在利用目录下开创static目录,在settings.py中增加STATIC_ROOT=’你的ststic的文本夹地址’

    :``set ts=4

  • 浏览器输入地方:     
  1. 在views.py中返回render()

    from future import unicode_literals

    from django.shortcuts import render # Create your views here. from django.http import HttpResponse def index(request):

    return render(request,'index.html')
    

 将Django安顿到Apache服务器上

 

    一个model对应一张数据表,以类的格局显示,包罗类部分中央字段以致数额的部分行为.  ORM(object relation mapping)对象关系映射,无需编写制定SQL语句

    [root@localhost ~]#python manage.py migrate(会在app/migrations/目录下生成移植文件)

  本学科基于慕课网<Django入门与实施>编写,基于CentOS 7

     [root@localhost ~]#django-admin startproject blog(新命令django-admin)    会在/var/www/html/下生成五个新的文书夹blog

  python人机联作式命令路程序,自动引进项目境况,能够应用它和项目进展相互 

    3. 在urls.py中增添更改 

  •  配置urls.py(每种url都是url函数的方式写在urlpatterns列表中。多少个参数(UWranglerL(正则卡塔 尔(英语:State of Qatar),对应响应措施,名称zzb为使用名)

   systemctl restart httpd

  •   linux自带Python,不须求安装,  
  • 小于2.7的本子与最新的Django不宽容
[root@192 ~]# mysql -uroot -p
Enter password: 

MariaDB [(none)]> use blog;

Database changed
MariaDB [blog]> select * from zzb_article
    -> ;
 ---- ------- --------- 
| id | title | content |
 ---- ------- --------- 
|  1 | 2     | 3       |
 ---- ------- --------- 
1 row in set (0.00 sec)

 

urlpatterns = [
        # ... the rest of your URLconf goes here ...
]   static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    pyhton manage.py shell

  用manage.py创制应用

  • 在settings.py中期维订正,使用MySQL取代django自带数据库.

    DATABASES = {

    'default': {
    

    # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

        'ENGINE': 'django.db.backends.mysql',
        'NAME':'blog',
        'USER':'root',
        'PASSWORD':'',
        'HOST':'',
        'PORT':'',
        'OPTIONS':{
        'autocommit':True,
        },
    }
    

    }

  • 在数据库中开创名叫blog的数据库

├── models.py  数据模块(在里面创设数据表卡塔尔使用ORM框架,雷同于MVC结构中的Models(模型)

     每一种函数必得回到叁个响应,函数必须存在一个参数,平日约定为request,对应多个UCRUISERL 

 

根基知识

配置models.py,增添时间参数

  • a) pip安装(须求本地有python-pip)

 

  启动django shell

 

搭建意况(提议源码安装,这里为了省事介绍yum | pip安装)

  edit_page.html

    systemctl start httpd

   安装(二选一)

  如:

分分快三全天计划网站 1

 

    systemctl stop firewalld

    ├── __init__.py注明模块的文本(默以为空,使myblog为八个模块,能够一向在代码中引用卡塔尔国

博客文章页面开垦

    在/var/www/html目录下:

 

CREATE DATABASE blog;

      安装mod_wsgi(yum install mod_wsgi)

典型开班创办博客系统

    

    编辑应用下models.py,在Article类下增多二个方法,依据Python版本(3/2.7)采取_str_(self)或_unicode_(self)

分分快三全天计划网站 2

Django Shell

UPRADOL配置加强

 

 

 

└── wsgi.py(Python Web Server Gateway Interface 服务器网关接口,python应用与Web服务器之间的接口,卡塔尔

MySQL

├── __init__.py

 

          配置项目中wsgi (点击跳转后续详整)

 **manage.py**

  如root@localhost ~]#python manage.py runserver(直接输入python manage.py能够列出命令选项)

博客编辑页面开辟

  1 # -*- coding: utf-8 -*-
  2 from __future__ import unicode_literals
  3 
  4 from django.shortcuts import render
  5 
  6 # Create your views here.
  7 from django.http import HttpResponse
  8 from . import models
  9 
 10 def index(request):
 11     article = models.Article.objects.get(pk=1)
 12     return render(request,'zzb/index.html',{'article':article})

   增多应用名到settings.py中的INSTALLED_APP里, 

 

实施多少迁移

  Django是一个根据Python的高等Web开辟框架,  特点:高效,火速,中度集成(不用自身弄底层卡塔尔国,无偿,开源

 

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.
class Article(models.Model):
    title = models.CharField(max_length=32, default='Title')
    content = models.TextField(null=True)
    pub_time = models.DateTimeField(null=True)
    def _unicode_ (self):
        return self.title
  • 改进apache配置文件(/etc/httpd/conf/httpd.conf),  修改配置文件后重启apache**

 

 

 

  • 嫌恶了手动运维httpd,mariadb?
from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^index/$', views.index),
    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'),
]
  • 往数据库中写入数据

    INSERT INTO zzb_article VALUE('1','2','3');

分分快三全天计划网站 3

  用django-admin成立项目

:``set expandtab

  交互作用比方:

  • 抽取数据

 

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>
    <a href="{% url 'zzb:edit_page' 0 %}">新文章</a>
</h1>
{% for article in articles %}
    <a href="{% url 'zzb:article_page' article.id %}">{{ article.title }}</a>
    <br/>
{% endfor %}
</body>
</html>

 

WSGIScriptAlias / /var/www/html/blog/blog/wsgi.py
WSGIPythonPath /var/www/html/blog
LoadModule wsgi_module modules/mod_wsgi.so
ErrorLog "logs/error_log"
<Directory /var/www/html/blog/blog>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

 

    from blog.models import Article

Django(自带一个Mini的服务器卡塔尔

  1. 在应用软件根目录下开创名字为templates(小写)的目录,
  2. 在templates目录下开创以app名称为名称的目录,将html文件放入个中(解决templates冲突)

    Title

    Hello,Blog

  yum install mariadb mariadb-server

  • pip安装pymysql插件
  • 修改blog/__init__.py,添加

    import pymysql pymysql.install_as_MySQLdb()

 

    在接纳目录下的admin.py中做如下改革* *

 

创立第叁个Templates(模板)

Admin增强

  

 

 

安插admin.py,使其出示越多内容

    在选用下的admin.py中引进自己的models模块(恐怕个中的模型类)

  设置tab为4个空格:  

 

 

开创第八个页面(响应卡塔 尔(英语:State of Qatar)

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

 

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.contrib import admin
from models import Article
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title','content','pub_time')

#根据时间进行筛选的过滤器

    list_filter = ('pub_time',)

# Register your models here.
admin.site.register(Article,ArticleAdmin)

 

 

 

 

博客开荒

  mysql的应用请参照他事他说加以侦察别的科目,这里不作介绍

Templates过滤器

 

 

  • 有的意况改正urls.py后,须求重启apache本事见到效能,不了解为啥,请注意.

  输入U福特ExplorerL→向目的url发送http诉求→服务器把页面响应给浏览器(通过后台编写的代码管理央求卡塔 尔(英语:State of Qatar)→浏览器分析获取到的页面源代码文书档案(所以看到的不是html文书档案卡塔 尔(阿拉伯语:قطر‎→见到网页

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划