赞
踩
1.django-admin startproject zzh
2.django-admin startapp blog
3.vim setting.py
app add --->blog
4.vim urls.py
url(r'blog/index/$',blog.views.index)
5.vim blog/views.py
from django.http import HttpResponse
def index(req):
return HttpResponse('<h1>hello</h1>')
6.python manager.py runserver
url:127.0.0.1:8000
数据添加
第一种方法:
emp=Employee()
emp.name='Tom'
emp.save()
第二种方法:
emp=Employee(name='Sam')
emp.save()
第三种方法:
Employee.objects.create(name='Musk')
emps=Employee.objects.all
mysite/mysite/settings.py ## mysite是项目名
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 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',
],
},
},
]
这个templates文件夹是放在project的目录下面的,是项目中或者说项目中所有的应用公用的一些模板
mysite/mysite/settings.py ## mysite/app1/ ## mysite是项目名字,app1是应用名字
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'app1/templates')], ## 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',
],
},
},
]
这个templates是在项目下面的应用app1文件夹里面,里面是app1这个应用用到的专用模板。
总结来说说:BASE_DIR是指mysite项目的绝对路径。
‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)] 是指到 BASE_DIR/templates文件夹中去取模板
‘DIRS’: [os.path.join(BASE_DIR, ‘app1/templates’)] 是指导 BASE_DIR/app1/templates文件夹中去取模板
一般来说,应该设置’DIRS’: [os.path.join(BASE_DIR, ‘templates’)],公用的templates需要指定。
app1专用的templates,放在app1/templates下,可以不需指定。因为在app1.views中若要指定一个专用模板,只要直接写‘app1_index.html’,Django服务器会在views文件所在的当前层(/app1)中找到templates,从而找到模板’app1_index.html’.
指定公用的templates路径,所有apps都可以调用,方便快捷。
app专用的templates不需要指定,这样当要复用这个app的时候,不需要考虑templates路径问题。
from django.shortcuts import render
def index(req):
emps = Employee.objects.all()
return render(req, 'index.html', {'emps':emps}
from django.shortcuts import render_to_response
def index(req):
emps = Employee.objects.all()
return render_to_response('index.html', {'emps':emps}
from django.shortcuts import render
from django.http import HttpResponse
from django.template import Template, Context
def home(request, id):
#return render(request,'hello world')
return HttpResponse('id is {}'.format(id))
def new(request):
t=Template('My name is {{name}}')
c=Context({'name':'TimorChow'})
return HttpResponse(t.render(c))
def hello(request):
context = {}
context['title'] = 'My First DjangoPage!'
#context['user'] = {'name':'sam', 'sex':'male', 'age':23}
user = Person('tom222', 2333, 'female')
context['user'] = user
book_list = ['python', 'java', 'php']
context['book_list'] = book_list
return render(request, 'hello.html', context)
在django 1.10 里面urls.py 新的写法:
urls.py 文件里添加blog的url:
from django.conf.urls import url
from django.conf.urls import include
from django.contrib import admin
from blog.views import index
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/$',index),
]
如果使用django1.10以下的版本则写法:
from django.conf.urls import url
from django.conf.urls import include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/$',"blog.views.index"),
]
ubuntu14.4 + django1.10
2. 问题描述
在配置完数据库mysite/settings.py后,通常需要运行
python manage.py syncdb
为数据库中每个应用建立一个数据库表。
然而如果你安装的Django Version >= 1.9,那么会出现如下问题:
gzxultra@gzxultraPC:~/django_try/mysitepythonmanage.pysyncdbUnknowncommand:′syncdb′Type′manage.pyhelp′forusage.gzxultra@gzxultraPC: /djangotry/mysite python manage.py syncdbpython manage.py syncdbUnknown command: ‘syncdbpython’Type ‘manage.py help’ for usage.
3. 解决方法
在stackoverflow上找到原因和解决方法:
syncdb is deprecated because of the migration system.
Now you can log your changes using makemigrations. This transforms your model changes into python code to make them deployable to another databases.
After you created the migrations you have to apply them: migrate.
So instead of using syncdb you should use makemigrations and then migrate.
简言之:在Django 1.9及未来的版本种使用migrate代替syscdb.
**
python manage.py makemigrations
python manage.py migrate
**
./manage.py migrate
在模板的form体里面,加入 {% csrf_token %} 例如:
<form action="" method="POST">
{% csrf_token %}
......
.....
</form>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。