当前位置: 首页 > wzjs >正文

定制网站建设公司价格龙之向导外贸经理人网站

定制网站建设公司价格,龙之向导外贸经理人网站,网站功能价格表,郑州华恩科技做网站怎么样Django是一个全面的Python Web开发框架,具有丰富的功能,和众多开箱即用的接口。 简单使用 我们使用Django的django-admin工具创建项目: django-admin startproject project1 cd project1 django-admin startapp app1以后,一个简…

Django是一个全面的Python Web开发框架,具有丰富的功能,和众多开箱即用的接口。

简单使用

我们使用Django的django-admin工具创建项目:

django-admin startproject project1
cd project1
django-admin startapp app1

以后,一个简单的Web项目框架就搭建起来了。

在project1目录(即app1的上层目录)中,有一个manage.py,可以实现大量的管理功能。

如使用python manage.py runserver,即可以启动一个支持热加载的Web服务,可以实时看到开发效果。

这之后,如果我们需要开发一些基本功能,只需要在app1目录中做一些定制。

如:在models.py中,重载models.Model,可以实现模型的定义;

在views.py中,实现一些视图层的任务。

在urls.py中定义urlpatterns列表,实现Url路由的管理。

manage.py的子命令

manage.py的runserver子命令,支持再增加一个地址与端口,表示让测试Web运行在什么地址上。

如:python manage.py runserver 192.168.1.1:8088,则会运行在192.168.1.1的8088端口上。

manage.py支持的子命令非常丰富:

python manage.py --help  Type 'manage.py help <subcommand>' for help on a specific subcommand.  Available subcommands:  [auth]  changepassword  createsuperuser  [contenttypes]  remove_stale_contenttypes  [django]  check  compilemessages  createcachetable  dbshell  diffsettings  dumpdata  flush  inspectdb  loaddata  makemessages  makemigrations  migrate  optimizemigration  sendtestemail  shell  showmigrations  sqlflush  sqlmigrate  sqlsequencereset  squashmigrations  startapp  startproject  test  testserver  [sessions]  clearsessions  [staticfiles]  collectstatic  findstatic  runserver

只简单记录几个:

  • creatsuperuser - 初始化超级管理员,当使用runserver启动之后,可以登录进入后台管理。
  • migrate - 初始化数据库。如果有使用了数据库的模型,这个命令将创建相应的数据表结构。
  • collectstatic - 收集静态文件。如果配置使用了静态资源,这个命令将把各个应用的静态资源复制到一起。

manage.py定制命令

如果我们需要实现一些自己的命令,可以在相应的项目配置目录中(对应上文创建的项目配置目录,就是project1/project1),新建一个management/commands目录,在这个目录中实现命令就行了。

实现的方法是:派生django.core.management.base import BaseCommand类,重载它的handle方法。

如:

from django.conf import settings
from django.core.management.base import BaseCommandclass Command(BaseCommand):help = "test user list in settings.py"def add_arguments(self, parser):passdef handle(self, *args, **options):user_list = settings.USER_LISTif len(user_list) == 0:print("USER_LIST is empty !!!")

这个文件命名为test_user.py,回到project1目录,就可以调用:

python manage.py test_user

了。

自定义manage.py的子命令,可以实现一些非运行期的初始化操作。

但是,怎样在运行期间执行一些初始化操作呢?

使用AppConfig的ready()方法

在应用目录中,有一个apps.py,它的内容大致如下:

from django.apps import AppConfig  class DemoConfig(AppConfig):  default_auto_field = 'django.db.models.BigAutoField'  name = 'demo'

这个类会在Django执行django.setup()的时候,执行它的ready()方法。

所以,我们可以重载这个类的ready()方法,加一些自己的代码:


from . import Actionclass DemoConfig(AppConfig):  default_auto_field = 'django.db.models.BigAutoField'  name = 'demo'def __init__(self, app_name, app_module):  super().__init__(app_name, app_module)  self.action = Action()  def ready(self):  self.action.run()

需要注意的是,这种方法在使用manage.py runserver执行的时候,会被执行两次

在urls.py中执行初始化任务

因为Django在处理浏览器的请求之前,需要加载应用内的urls.py,取得里面的urlpatterns列表,设定路由。所以,可以把要执行的代码放入urls.py中。

使用这种方法,简单方便,而且因为urls.py文件不是在django.setup()中被加载的,所以没有使用AppConfig的ready()方法的两次执行问题。

但是,使用url.py来做初始化也有弊端。因为url.py在我们加载路由的时候触发,所以我们调用manage.py执行非runserver子命令的时候,url.py里的代码也会执行。

当然这种需求很容易解决,在urls.py里面,判断sys.argv的变量是否是manage.py与runserver就行。

使用Admin

django.contrib里面,包含很多可以直接使用的应用,最典型的就是admin:一个开箱即用的后台管理界面。

使用admin应用只需要三步:

  1. settings.py中包含django.contrib.admin应用:
INSTALLED_APPS = ['django.contrib.admin',  # 省略部分
]
  1. 执行manage.py的createsuperuser子命令:
 python manage.py createsuperuser
  1. 在浏览器中访问/admin

扩展Admin

默认地,Admin只能管理用户、组以及权限相关的模型。对于我们自己实现的模型,就需要注册之后才能使用。

假设我们实现了一个Service类:

from django.db import modelsclass Service(models.Model):  id = models.AutoField(primary_key=True)  name = models.CharField(max_length=255)  key = models.CharField(max_length=255)  url = models.CharField(max_length=1024) 

在admin.py中,需要这样注册:

from django.contrib import admin@admin.register(Service)  
class ServiceAdmin(admin.ModelAdmin):  list_display = ('name', 'key', 'url', 'is_active') 

之后,访问/admin的时候,就会看到Service模型了,可以添加、更改、删除。

admin.ModelAdmin支持很多属性,用于定制管理页面。

除了上面列出的list_display,用于控制在管理页面按列表显示的列以外,还有list_display_linkslist_filterlist_select_relatedlist_editable等等。

另外,如果想让模型的权限被灵活控制,还可以重载admin.ModelAdmin的has_add_permission、has_change_permission以及has_delete_permission。

比如以下代码,就定义了一个只能删除的模型:

class DeleteOnlyAdmin(admin.ModelAdmin):  def has_add_permission(self, request):  return False  def has_change_permission(self, request, obj=None):  return False  def has_delete_permission(self, request, obj=None):  return True

文章转载自:

http://gsLtTL1A.ssrjt.cn
http://nmmqgrBM.ssrjt.cn
http://tQzYUwXk.ssrjt.cn
http://Oz6nxyPz.ssrjt.cn
http://faPqisI0.ssrjt.cn
http://re05gK14.ssrjt.cn
http://2ytDidzf.ssrjt.cn
http://QNty7TjU.ssrjt.cn
http://uMg7CoyO.ssrjt.cn
http://7wE9Ld2j.ssrjt.cn
http://cFBjTF2m.ssrjt.cn
http://LelPtoHR.ssrjt.cn
http://0V8rEk11.ssrjt.cn
http://zBCUpPKx.ssrjt.cn
http://GuwsK1Yl.ssrjt.cn
http://clyHhEsl.ssrjt.cn
http://9ukkdw68.ssrjt.cn
http://yL3uaVRB.ssrjt.cn
http://NqRU0Vjq.ssrjt.cn
http://cMfIluOo.ssrjt.cn
http://KksMmXpc.ssrjt.cn
http://dPg4iHfd.ssrjt.cn
http://856wDepF.ssrjt.cn
http://3Tz8Z69C.ssrjt.cn
http://wVm5O2M9.ssrjt.cn
http://0hYdbcTC.ssrjt.cn
http://YLlTA1FB.ssrjt.cn
http://a5I89L3T.ssrjt.cn
http://3OGZgfz8.ssrjt.cn
http://bvXzijJM.ssrjt.cn
http://www.dtcms.com/wzjs/623066.html

相关文章:

  • 广州网站建设 seowordpress版面混乱
  • 一个新手建设网站怎么简单国外域名注册平台
  • 网页设计欣赏及点评合肥seo优化排名公司
  • 做爰网站下载地址深圳市最繁华的地方在哪里
  • 电信网站开发语言主要用什么电商具体是做什么的上班
  • 如何做盗版小说网站114啦网址导航建站系统
  • 北海购物网站开发设计定制软件app开发公司
  • 免费3d模型素材网站网站建设买阿里云云服务器
  • 建设一个蛋糕网站的背景与目的wordpress自动关键词
  • 东莞 网站建设 保健品百度中搜到网站名字
  • 浙江省建设银行网站首页wordpress 微博功能
  • 怎么做微课网站怎么查网站的所有权
  • 如何高效建设品牌网站泉州网站建设技术外包
  • 教育类网站 前置审批小程序开发一个要多少钱
  • 怎么创建自己的博客网站asp access网站开发实例精讲
  • 中国建设银行网站会员用户名WordPress小工具吗美化
  • 网站建设对接视频赌钱网站怎么做的
  • 东莞想做网站四川城乡建设网站证件查询
  • 网站建设收费wordpress同ip弹一次广告
  • 深圳中高端网站建设怎么样大连优化排名推广
  • 巴彦淖尔市 网站建设wordpress轮播图设置
  • 能打开任何网站浏览器网站建设管理意见
  • 离石网站建设公司2019银川住房建设规划信息网站
  • 网站管理员怎么联系seo专员是什么
  • 网站系统建设思想如何写网络推广需要什么
  • 站长之家综合查询工具青海网站制作公司
  • 网站制作视频教程古镇高端网站建设
  • 信息化管理系统软件湖南网站seo优化
  • app开发网站公司品牌推广广告
  • 网站连接微信网站建设费用价格表