location 最后一个文件夹名就是project名,我用了DjangoProject。
Application 是自动加入的APP名字,我用了DjangoTest
1.添加APP
在pycharm的工具栏找到 Tools,点击之后会有“Run manage.py task”选项,点击它之后,在pycharm下面会出现一个输入界面,
在里面输入“startapp appName(你的App名称)”,回车之后就可以在工程下面看到你新建的App了。
命令:startapp Plan
会自动创建目录,文件……
后续文章也主要使用这个名称,不再说明
第一篇文章,我们创建了APP DjangoTest 现在又创建了一个APP Plan.
2.把新建的APP Plan加入APPS列表:
编辑项目setting.py,(DjangoProject/setting.py)
INSTALLED_APPS = 中加入新建的app
1 INSTALLED_APPS = [ 2 ‘django.contrib.admin‘, 3 ‘django.contrib.auth‘, 4 ‘django.contrib.contenttypes‘, 5 ‘django.contrib.sessions‘, 6 ‘django.contrib.messages‘, 7 ‘django.contrib.staticfiles‘, 8 ‘Plan.apps.PlanConfig‘, #此行为添加 9 ]
记得最后一个逗号,根据pycharm的提示,很容易写的。
3.设置公用静态路径:
编辑项目setting.py,(DjangoProject/setting.py)最下面一部分
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.10/howto/static-files/ STATIC_URL = ‘/static/‘#URL访问路径 STATIC_ROOT = os.path.join(BASE_DIR, ‘deploy_static‘)#未来方便部署用的路径 STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"),#URL对应的路径和URL名称设一致,编写想关代码时提示是正确的 ) STATICFILES_FINDERS = ( #这个就是默认搜索顺序,不方便的时候,就上下调调顺序。 "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" )
STATICFILES_DIRS是搜索系统路径,django还会搜索app目录下的static目录。
简单说就是STATICFILES_DIRS是公用的静态文件,如jquery……
app目录下的static是这个app自有的,非公用的。
两个位置都会被搜索到
文件位置:项目/static/ (main/setting.py)
访问地址:ip:8000/static
这样代码不提示你错误。很多教程把STATIC_ROOT设为static 把STATICFILES_DIRS设为别的路径,可能不适合pycharm吧,因为pycharm提示路径错误或者没有提示。
4.创建数据结构,数据模型………………随便你怎么叫吧
编辑 DjangoTest目录下 models.py
注意add_date,是创建时间,mod_date是修改时间,这个是特殊设置,后台也不可以随便改,django默认还不在后台显示。
class Train_plan(models.Model):#车次计划表 add_date = models.DateTimeField(‘保存日期‘, default=timezone.now) mod_date = models.DateTimeField(‘最后修改日期‘, auto_now=True) date =models.DateField(‘计划日期‘) train_name=models.CharField(max_length=16,verbose_name=‘车次名称‘) start_time=models.TimeField(‘计划开始时间‘) end_time=models.TimeField(‘计划结束时间‘) track=models.IntegerField(‘股道‘,default=‘0‘) plan_end=models.TimeField(‘图定终到时间‘) plan_in=models.TimeField(‘计划入库时间‘) plan_out=models.TimeField(‘计划出库时间‘) plan_start=models.TimeField(‘图定发车时间‘) note=models.TimeField(‘备注‘,null=True,blank=True) class Meta: verbose_name=‘车次计划‘ verbose_name_plural= ‘车次计划‘
以后会有文章说明数据类型,额外的方法。
运行命令创建数据结构,数据表
makemigrations
migrate
5.注册app到管理界面
编辑app目录下admin.py (DjangoTest/admin.py)
from .models import Train_plan #例程使用 from .models import Carriage_plan #非例程使用 from .models import Carriage_history#非例程使用 class YourAdmin(admin.ModelAdmin):#例程使用 readonly_fields = (‘add_date‘, ‘mod_date‘,)
admin.site.register(Train_plan,YourAdmin)#例程使用
admin.site.register(Carriage_plan,YourAdmin)#非例程使用
admin.site.register(Carriage_history,YourAdmin)#非例程使用
readonly_fields,是把默认后台不会显示的内容以只读形式显示出来。可以给多个表来使用,当然,要有相同的条目。
6.登陆后发现app名字是类名,修改为中文
编辑app目录下apps.py (DjangoTest/app.py)
from django.apps import AppConfig class DjangoTestConfig(AppConfig): name = ‘DjangoTest‘ verbose_name = ‘测试管理‘
verbose_name就是别名显示,很多地方都是这么用。