码迷,mamicode.com
首页 > 其他好文 > 详细

框架Django

时间:2017-08-22 20:56:27      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:改变   报错   settings   images   png   执行   return   ack   art   

一.基本命令

1.新建一个django project

django-admin.py startproject project_name
特别是在windows上如果报错,尝试使用django-admin代替django-admin.py

2.新建app

新建app需要切换到项目目录project_name下,即 cd project_name然后:
python manage.py startapp app_name
或django-admin.py startapp app_name

技术分享

 

3.创建数据库表或更改数据库表或字段

Django 1.7.1及以上
1.创建更改的文件
python manage.py makemigrations
2.将生成的py文件应用到数据库
python manage.py migrate

旧版本Django1.6及以下
python manage.py syncdb

这种方法可以在SQL等数据库中创建与models.py代码对应的表,不需要自己手动执行SQL

4.使用开发服务器

开发服务器,一般修改代码后会自动重启,方便调试和开发,但是由于性能问题,建议只用在测试,不可用在生产环境

python manage.py runserver IP:PORT

5.清空数据库

python manage.py flush

6.创建超级管理员

python manage.py create superuser
修改用户密码
python manage.py changepassword username

7.导出数据 导入数据

python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json

8.Django项目环境终端

python manage.py shell

如果安装了bpython或ipython会自动调用它们的界面

这个命令和直接运行python或bpython进入shell的区别:可以在这个shell中调用当前项目的models.py中的API,对于操作数据和小测试都非常方便

9.数据库命令行

python manage.py dbshell

Django会自动进入settings.py中设置的数据库,如果是MySQL或postgreSQL,则会要求输入数据库用户密码

10.更多命令

python manage.py

查看详细的列表

二.视图与网址

Django中网址写在urls.py文件中,用正则表达式对应view.py中的一个函数或者generic类

定义视图函数


from django.shortcuts import render
def index(request):
    return render(request,index.html)

定义一个index函数,第一个参数必须是request,与网页发来的请求有关,request变量中包含get或post的内容,用户浏览器,系统等信息在里面

定义视图函数相关的URL网址,打开project_name/project_name/urls.py文件

from django.conf.urls import url,include
from django.contrib import admin
from blog import views
urlpatterns = [
    url(r^admin/, admin.site.urls),
    url(r^$,views.index),
    url(r^index/,views.index),
    # url(r‘^(\d{4})/$‘,year_query) 如果想要获取匹配的值并传入后边的视图函数,可以把想要匹配的正则表达式加上括号,成为后边的视图函数的参数,并以位置参数的形式传入
    # url(r‘^(?P<year>\d{4})/(?P<month>\d{2})$‘,views.year_query),  命名传入参数,以关键字参数传入
    # url(r‘reg/‘,views.reg,name="register")
    url(r^blog/,include(blog.urls)) #新的应用需要添加对应的urls避免耦合,通过import include,并以该种形式实现对应应用的路由
]

URL中的name

url(r‘^reg/‘,views.reg,name="register")

简单说,name可以用于在templates,models,views……中得到对应的网址,相当于给网址取了个名字,只要名字不变,网址变了也能通过名字获得

我们注册页面用的是/reg/,如果以后网址进行了变更,比如改成了/new_client/,但在网页中,代码中很多地方都是写死的/reg/,如果是这样把网站写死了,会在更改了网址(正则)后,模板(templates),视图(views.py用于跳转),模型(models.py,获取对象对应的地址)用了此网址的,都需要进行相应的更改,十分繁琐

如果网址修改成了/new_client/,即urls.py进行了更改获取的网址也会动态地跟着改变,但是后面的name=‘register‘没有改变,这时{%url ‘register‘ %}就会渲染对应的网址成/new_client/

三.快捷函数

def login(request):
    if request.method=="POST":
        username=request.POST.get("username")
        pwd=request.POST.get("pwd")
        if username==xiaobai and pwd==123:

            return redirect(/index/)

    return render(request, "login.html")
#总结: render和redirect的区别:
#   1 if render的页面需要模板语言渲染,需要的将数据库的数据加载到html,那么所有的这一部分
#     除了写在yuan_back的视图函数中,必须还要写在login中,代码重复,没有解耦.

#   2 the most important: url没有跳转到/yuan_back/,而是还在/login/,所以当刷新后
#     又得重新登录.

 

框架Django

标签:改变   报错   settings   images   png   执行   return   ack   art   

原文地址:http://www.cnblogs.com/c491873412/p/7413415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!