django学习笔记(1)

mac2022-06-30  88

Django 特点强大的数据库功能     用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句自带的强大的后台功能     几行简单的代码就让你的网站拥有一个强大的后台,轻松管理你的内容!优雅的网址     用正则匹配网址,传递到对应函数,随意定义,如你所想!模板系统     强大,易扩展的模板系统,设计简易,代码,样式分开设计,更容易管理。缓存系统     与memcached或其它的缓存系统联用,更出色的表现,更快的加载速度。国际化     完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。Django 全貌一览urls.py     网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。views.py     处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。models.py     与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。forms.py     表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。templates 文件夹     views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。admin.py     后台,可以用很少量的代码就拥有一个强大的后台。settings.py     Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。Django 基本命令新建 项目     $ django-admin startproject mysite新建 app     $ python manage.py startapp blog     一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。同步数据库     $ python manage.py migrate使用开发服务器     $ python manage.py runserver [port]清空数据库     $ python manage.py flush创建超级管理员     $ python manage.py createsuperuser导出数据     $ python manage.py dumpdata blog > blog.json导入数据     $ python manage.py loaddata blog.json项目环境终端     $ python manage.py shell数据库命令行     $ python manage.py dbshell查看更多命令     $ python manage.py

创建一个简单例子的流程

环境:windows7 + python3.4 + django1.8

====> Creating a project     $ django-admin startproject mysite     $ cd mysite====> Database setup     $ edit mysite\settings.py

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }

     $ python manage.py migrate====> The development server (http://127.0.0.1:800)     $ python manage.py runserver====> Creating models     $ python manage.py startapp polls     $ edit polls\models.py

from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)

====> Activating models     $ edit mysite\settings.py

INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls', )

     $ python manage.py makemigrations polls     $ python manage.py sqlmigrate polls 0001     $ python manage.py migrate【Remember the three-step guide to making model changes:    Change your models (in models.py).    Run python manage.py makemigrations to create migrations for those changes    Run python manage.py migrate to apply those changes to the database.】====> Playing with the API     $ python manage.py shell

>>> from polls.models import Question, Choice>>> >>> Question.objects.all() []>>> >>> from django.utils import timezone>>> >>> q = Question(question_text="What's new?", pub_date=timezone.now()) >>> q.save()>>> >>> q.id 1 >>> q.question_text "What's new?" >>> q.pub_date datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)>>> >>> q.question_text = "What's up?" >>> q.save()>>> >>> Question.objects.all() [<Question: Question object>]

 

====> Change models.py     edit polls\models.py

import datetime from django.db import models from django.utils import timezone class Question(models.Model): # ... def __str__(self): # __unicode__ on Python 2 return self.question_text def was_published_recently(self): return self.pub_date >= timezone.now() - datetime.timedelta(days=1) class Choice(models.Model): # ... def __str__(self): # __unicode__ on Python 2 return self.choice_text

 

====> Play the API again

     python manage.py shell

>>> from polls.models import Question, Choice>>> >>> Question.objects.all() [<Question: What's up?>]>>> >>> Question.objects.filter(id=1) [<Question: What's up?>]>>>>>> Question.objects.filter(question_text__startswith='What') [<Question: What's up?>] >>>>>> from django.utils import timezone>>> >>> current_year = timezone.now().year >>> Question.objects.get(pub_date__year=current_year) <Question: What's up?> >>>>>> Question.objects.get(id=2) Traceback (most recent call last): ... DoesNotExist: Question matching query does not exist. >>> Question.objects.get(pk=1) <Question: What's up?> >>>>>> q = Question.objects.get(pk=1) >>> q.was_published_recently() True >>> q = Question.objects.get(pk=1) >>>>>>>>> q.choice_set.all() [] >>> q.choice_set.create(choice_text='Not much', votes=0) <Choice: Not much>>>> >>> q.choice_set.create(choice_text='The sky', votes=0) <Choice: The sky>>>>>>> >>> c = q.choice_set.create(choice_text='Just hacking again', votes=0) >>> c.question <Question: What's up?> >>>>>> q.choice_set.all() [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>] >>> q.choice_set.count() 3>>> >>> Choice.objects.filter(question__pub_date__year=current_year) [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]>>> >>> c = q.choice_set.filter(choice_text__startswith='Just hacking') >>> c.delete()

 

转载于:https://www.cnblogs.com/hhh5460/p/4458879.html

最新回复(0)