标签:改变 报错 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/,所以当刷新后 # 又得重新登录.
标签:改变 报错 settings images png 执行 return ack art
原文地址:http://www.cnblogs.com/c491873412/p/7413415.html