博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django2第一个工程
阅读量:5111 次
发布时间:2019-06-13

本文共 4237 字,大约阅读时间需要 14 分钟。

开发Django应用的典型工作流程是:先创建模型,接着最先让管理页run起来,这样你的同事或者客户就可以开始往系统里填数据。 然后,开发如何将数据展示给公众的部分。创建一个项目:django-admin startproject mysite进入mysite目录,启动开发服务器:$ python manage.py runserver访问:http://127.0.0.1:8000指定端口:$ python manage.py runserver 8080创建应用:$ python manage.py startapp pollspolls/views.py:from django.http import HttpResponsedef index(request):    return HttpResponse("Hello, world. You're at the polls index.")要调用视图,我们需要将它映射到一个URL.创建polls/urls.py:from django.urls import pathfrom . import viewsurlpatterns = [    path('', views.index, name='index'),]下一步是将根URLconf指向polls.urls模块。mysite/urls.py:from django.urls import include, pathfrom django.contrib import adminurlpatterns = [    path('polls/', include('polls.urls')),    path('admin/', admin.site.urls),]$ python manage.py runserver在浏览器中转到http://localhost:8000/polls/,您应该看到文本“Hello, world. You’re at the polls index.“mysite/settings.py配置数据库配置时区、语言:LANGUAGE_CODE = 'zh-Hans'TIME_ZONE = 'Asia/Shanghai'请注意文件顶部的INSTALLED_APPS设置。 它包含在此Django实例中激活的所有Django应用程序的名称。其中一些应用程序至少使用了一个数据库表,所以我们需要在数据库中创建表格,然后才能使用它们。$ python manage.py migratemigrate命令查看INSTALLED_APPS设置,并根据mysite/settings.py文件中的数据库设置创建所有必要的数据库表,迁移命令将只对INSTALLED_APPS中的应用程序运行迁移。polls/models.py:from django.db import modelsclass Question(models.Model):    question_text = models.CharField(max_length=200)    pub_date = models.DateTimeField('date published')class Choice(models.Model):    question = models.ForeignKey(Question, on_delete=models.CASCADE)    choice_text = models.CharField(max_length=200)    votes = models.IntegerField(default=0)要将该应用程序包含在我们的项目中,我们需要在INSTALLED_APPS设置中添加对其配置类的引用。mysite/settings.py:INSTALLED_APPS = [    'polls.apps.PollsConfig',]$ python manage.py makemigrations polls通过运行makemigrations,您告诉Django您已经对模型进行了一些更改,并且您希望将更改存储为一个migration。sqlmigrate命令使用迁移名称并返回它们的SQL:$ python manage.py sqlmigrate polls 0001再次运行migrate以在您的数据库中创建这些模型表:$ python manage.py migrate请记住进行模型更改的三步指南:更改模型(在models.py中)。运行python manage.py makemigrations为这些更改创建迁移运行python manage.py migrate,将这些更改应用到数据库。进入交互式Python shell并使用Django提供的API。$ python manage.py shellfrom polls.models import Question,Choicefrom django.utils import timezoneQuestion.objects.all()q = Question(question_text="What's new?", pub_date=timezone.now())q.save()q.idQuestion.objects.filter(id=1)Question.objects.filter(question_text__startswith='What')current_year = timezone.now().yearQuestion.objects.get(pub_date__year=current_year)向模型中添加__str__()方法很重要,不仅为了您在处理交互提示时的方便,还因为在Django自动生成的管理中使用了对象表示。创建管理员账户:$ python manage.py createsuperuserhttp://127.0.0.1:8000/admin在admin中修改polls应用程序,polls/admin.py:from django.contrib import adminfrom .models import Questionadmin.site.register(Question)创建polls/templates文件夹mysite/settings.py中TEMPLATES: 'APP_DIRS': True, 创建polls/templates/polls/index.html: render()函数将request对象作为第一个参数,将模板名称作为第二个参数,将字典作为可选的第三个参数。返回HttpResponse对象。 get_object_or_404()函数将Django模型作为其第一个参数和任意数量的关键字参数传递给模型管理器的get()函数。 It raises Http404 if the object doesn’t exist. 还有一个get_list_or_404()函数,它的工作方式类似get_object_or_404()  —— 差别在于它使用filter()而不是get()。 It raises Http404 if the list is empty.将命名空间添加到您的URLconf中.polls/urls.py:app_name = 'polls'polls/templates/polls/index.html:
  • {
    { question.question_text }}
  • you should always return an HttpResponseRedirect after successfully dealing with POST data.默认情况下,DetailView通用视图使用名为app 名称/ model 名称_detail.html的模板。运行测试用例polls/tests.py:$ python manage.py test pollsWhat happened is this:python manage.py test polls looked for tests in the polls applicationit found a subclass of the django.test.TestCase classit created a special database for the purpose of testingit looked for test methods - ones whose names begin with testin test_was_published_recently_with_future_question it created a Question instance whose pub_date field is 30 days in the future… and using the assertIs() method, it discovered that its was_published_recently() returns True, though we wanted it to return FalseDjango provides a test Client to simulate a user interacting with the code at the view level.Good rules-of-thumb include having:a separate TestClass for each model or viewa separate test method for each set of conditions you want to testtest method names that describe their function

    转载于:https://www.cnblogs.com/liuliu3/p/10812046.html

    你可能感兴趣的文章
    HTML+CSS学习笔记(九)
    查看>>
    笑谈人生的哲理和智慧
    查看>>
    【BZOJ2286】【SDOI2011】消耗战 [虚树][树形DP]
    查看>>
    【Foreign】Game [博弈论][DP]
    查看>>
    3.13上午 听力BLOCK3、4 写作形容词,连字符,名词动化大词
    查看>>
    pycharm 安装 tensorflow
    查看>>
    C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
    查看>>
    一次失败的项目经理招聘经验
    查看>>
    怎么保存退出vi编辑
    查看>>
    Java泛型的基本使用
    查看>>
    1076 Wifi密码 (15 分)
    查看>>
    rsync
    查看>>
    java中的IO操作总结
    查看>>
    noip模拟赛 党
    查看>>
    bzoj2038 [2009国家集训队]小Z的袜子(hose)
    查看>>
    Java反射机制及其Class类浅析
    查看>>
    Postman-----如何导入和导出
    查看>>
    面试题17:合并两个排序的链表
    查看>>
    Jmeter HTTPS接口测试的证书导入
    查看>>
    随机生成30道小学二年级四则远算题目
    查看>>