Django 2.2 总结整理

1.setting.py

添加APP及其设置

INSTALLED_APPS = [
    'django.contrib.admin',
    ...
    #添加创建的APP
    'books.apps',               
    'books.apps.BooksConfig',
]

添加模板路径(也包括jpg,csv等其它文件)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            BASE_DIR + "/templates/layout",  #自定义模板路径
            BASE_DIR + "/books",
        ],
        ...
    },
]

设置语言和时区

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai' #设置时区
设置静态文件(CSS, JavaScript, Images)
STATIC_URL = '/static/'
#css,js路径
STATIC_ROOT=os.path.join(BASE_DIR,'static')

STATICFILES_DIRS=[
    ("css",os.path.join(STATIC_ROOT,'css')),
    ("js",os.path.join(STATIC_ROOT,'js')),
    ("images",os.path.join(STATIC_ROOT,'images')),
]

2.urls.py

后台管理界面汉化设置

admin.site.site_header="图书管理系统"
admin.site.index_title="管理界面"
admin.site.site_title="图书管理系统"

/time/plus/3 的url方法


from django.conf.urls import url    #解决办法一

urlpatterns = [
    path('admin/', admin.site.urls),
    ...
    path('time/',view.current_datetime),
    url(r'^time/plus/(\d{1,2})/$',view.hours_ahead),#解决办法一
    ...
]

弃用Context

def current_datetime(request):
    current_date =datetime.datetime.now()
    #t=get_template('current_datetime.html')
    #html=t.render({'current_date':now})    #弃用Context
    #return HttpResponse(html)
    return render_to_response('current_datetime.html',{'current_date':locals()})

添加books中urls.py路由

from django.conf.urls import url,include

urlpatterns = [
    ...
    url(r'^', include('books.urls')),
]

3.books.views.py

 升级django-ajax-selects,然后把代码里边的mimetype换成content_type
pip install --upgrade django-ajax-selects
def my_image(request):
    image_data=open("/touxiang.jpg","rb").read()
    return HttpResponse(image_data,content_type="image/jpg")

4.books.apps.py

from django.apps import AppConfig

class BooksConfig(AppConfig):
    name = 'books'
    verbose_name='图书管理系统'

5.books.models.py

class Book(models.Model):
    title=models.CharField("书名",max_length=100)
    #多对多
    authors=models.ManyToManyField(Author,verbose_name="作者")
    #外键
    publisher=models.ForeignKey(Publisher,on_delete=models.CASCADE,verbose_name='出版商')
    publication_date=models.DateField("出版日期")
    #num_pages=models.IntegerField(blank=True,null=True)
    #模型管理器设定
    book=models.Manager()
    class Meta:
        verbose_name='图书'    #别名
        verbose_name_plural=verbose_name
    def __str__(self):
        return self.title

6.books.admin.py

from django.contrib import admin
from books.models import Publisher,Book,Author

#自定义管理界面
class PublisherAdmin(admin.ModelAdmin):
    list_display = ['id','name','website']
class BookAdmin(admin.ModelAdmin):
    list_display = ['id','title','publisher','publication_date']
    list_filter = ('publication_date',)
    date_hierarchy = 'publication_date'
    ordering = ('-publication_date',)
    #fields = ('title','authors','publisher','publication_date')
    filter_horizontal = ('authors',)
    raw_id_fields = ('publisher',)
class AuthorAdmin(admin.ModelAdmin):
    list_display = ['id','first_name','last_name','email']
    search_fields = ('first_name','last_name')

# Register your models here.
admin.site.register(Publisher,PublisherAdmin)
admin.site.register(Book,BookAdmin)
admin.site.register(Author,AuthorAdmin)

7.html模板

<head>
    {% load staticfiles %}
    <title>Home</title>
    <link href="{% static 'css/bootstrap.css' %}" rel="stylesheet" type="text/css"    media="all">
    <script src="{% static 'js/bootstrap.min.js' %}"></script>
    ...
</head>

8.管道

{% if books %}
    <!--管道-->
    <p>Found {{ books|length }} book{{ books|pluralize }}.</p>
    <ul>
        {% for book in books %}
        <li>{{ book.title }}</li>
        {% endfor %}
    </ul>
{% else %}
    <p>No books matched your search criteria.</p>
{% endif %}
发布了120 篇原创文章 · 获赞 3 · 访问量 3749

猜你喜欢

转载自blog.csdn.net/weixin_43307431/article/details/105469770
2.2