Python django学习

url
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
网站的基本要素
1.通过访问不同的url,来访问不同的网页。(用户)
2.通过解析不同的url,来输出(display render)url指向的网页内容。(开发者)
解析:
用户的请求(rquest)->通过访问不同的url
响应的内容,也就是用户看到的(response)->用户最终看到的内容
网站开发(请求->反应)
不同的浏览器对html,css,js这些东西的解析标准是不一样的,所以看到的可能是不同的。
开发者
1.获得请求request
2.解析request(拿到url,解析url,让处理该url的方法去处理request)
3.拼接reponse,返回给用户
4.浏览器获得响应内容,解析html,css,js

all in one
沙盒环境?
django step by step

url
开发逻辑
model
比较有意思的地方
中间层
template
怎么切换不同末班
虚拟环境中安装django

cd /tmp
sudo apt-get install python-virtualenv
virtualenv django
New python executable in django/bin/python
Installing 
cd /django
No such file or directory
cd django/
 .bin/activate
. bin/activate
pip install django

开始安装django
结果发现下载太慢了
于是去官网
https://docs.djangoproject.com/en/1.9/topics/install/#installing-development-version
下载了.tar.gz 的安装包
到ubuntu下用命令

#解压
tar -xvzf /tmp/pip-w6lgMY-unpack/Django-1.9.4.tar.gz
cd Django-1.9.4
#看一下安装说明
vim INSTALL
#进行安装
python setup.py install

之后django就成功安装了
建立新项目

django-admin.py startproject xxx
#进入xxx
cd xxx
#然后
nano manage.py
./manage.py runserver
-bash: ./manage.py: Permission denied
chmod -R 777 manage.py
./manage.py runserver

然后django正常运行

March 23, 2016 - 19:24:30
Django version 1.9.4, using settings 'blog.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

由于是在虚拟机(x-shell)中运行,并进不去主页http://127.0.0.1:8000/
所以,需要运行命令
./manage.py runserver X.X.X.X:8000
前面为虚拟机IP,此时即可用浏览器进行访问。
nano urls.py 即可查看urls.py

django_step_by_step
http://www.lhelper.org/dev/django_step_by_step/newtest/doc/
csrf错误
https://docs.djangoproject.com/en/dev/ref/csrf/#ref-contrib-csrf
http://zhidao.baidu.com/link?url=cCWezxm-JEFDddvwzYiUCAepAYwbNJ8BxuVE3DPMlLjloNQd8aIA4mBrJcu8EpLqo63d9xJSiQ3g142_Cxxdqua9tKtABaSj2LpE7vyzz3y
重新进入虚拟环境
cd /tmp/django
. bin/activate
cd /Django-1.9.4/blog
./manage.py runserver 10.24.35.103:8000

1.url
url的设置,通过识别url后缀不同,跳转到不同的页面
主要通过正则匹配比如
这里需要注意的是,后面的执行函数是基于你base路径的,有时候发生找不到view的情况,通常是路径没有设对

urlpatterns = [
    url(r'^$', 'blog.hello.index'),
    url(r'^blog$', 'blog.views.homec'),
    url(r'^blog/topic_(?P<id>[\w]+)$', 'blog.views.homeb'),
    url(r'^admin/', admin.site.urls),
    url(r'^add/$', 'article.views.add'),
    url(r'^list/$', 'article.views.list'),
    url(r'^addnum$', 'blog.add.addnum'),
]

2.settings
这个包括网页的一些基本设置,比如

#基本路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#新建的app需要放到settings中
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #the new one
    'article',
]
#取消csrf,否则在post时会报错
MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
#    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
设置tempate,调用html
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['./templates',],#路径
        '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',
            ],
        },
    },
]
#数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': '/tmp/sth.db'
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
#时间
TIME_ZONE = 'UTC'

3.views,存一下可用的方法
e.g.1

from django.http import HttpResponse
from django.template import Template
from django.template import Context
def home(request):
    print request
    #return HttpResponse('hey,my world.')
    return HttpResponse('home page')

def homeb(request,id):
    return HttpResponse('hey,my world. id is %s'%id)

def homec(request):
    """
    ???
    """
    template_str = "My name is {{name}}"
    t=Template(template_str)
    c=Context({"name":"Stephane"})
    t.render(c)
    return HttpResponse('aaa%s'%type(t))

e.g.2

#coding:utf-8
from django.shortcuts import render
from django.shortcuts import render_to_response,HttpResponseRedirect
from article.models import Article
# Create your views here.
def list(request):
    #id 降序排序
    articles = Article.objects.order_by("-id").all()
    return render_to_response('list.html',{'article':articles})



def add(request):
    if  request.method =='POST':    
        #获取表单内容
        content=request.POST.get('content',None)
        title=request.POST.get('title',None)
        #写入
        new=Article(content=content,title=title)
        new.save()
        #跳转
        return HttpResponseRedirect('/list')
    return render_to_response('add.html',{'method_str':request.method})

4.models管理数据库中的表和实际变量关联,即通过orm来调用数据库,而不是通过sql
orm 减少写sql出错的概率,而且可以兼容不同的数据库
但是并不一定能生成优化很好的sql语句,所以要养成打印sql的习惯
在models更新表信息之后,需要
在settings中的apps中放入blog.article,然后运行
python manage.py makemigrations
python manage.py migrate
e.g.

from __future__ import unicode_literals

from django.db import models

# Create your models here.
class Article(models.Model):
    title = models.CharField(max_length=30)
    content = models.TextField()

5 manage.py 这个是用来管理django的脚本,可用help查看都有什么命令

其他基础

对于url调用的方法(views)
一般参数为request 可能为
提交数据 post push
访问数据 get pull

对于模板(html)
渲染模板render_to_response(‘add.html’)
form的最基本参数
action 表单数据提交到url
method 提交的方式post和get
最基本提交元素
input
textarea
radio
select
多行需要闭合标签
imput中最基本元素
name
type 输入类型
可以传入模板一个字典
调用的时候是在html中使用{{key}}
提交时action,代表提交到哪个接口之中

template
http://djangobook.py3k.cn/chapter04/
http://www.newlifeclan.com/symfony/archives/483
环境搭建
http://www.jianshu.com/p/dbc4193b4f95
migrate
http://www.tuicool.com/articles/jAJjma
基本命令
http://www.ziqiangxuetang.com/django/django-basic.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值