django基本操作命令大全

发布时间:2019-09-22 07:53:20编辑:auto阅读(1664)


    # 在下载好的django路径下执行django的安装
    # https://pypi.python.org/pypi/Django/1.6.4
    python3 setup.py install
    #
    # 新建django项目
    django-admin.py startproject mysite
    #
    # 运行django项目
    python3 manage.py runserver [port]
    #
    # 创建一个app
    python3 manage.py startapp appname
    #
    # 模型定义特殊字段定义(后面一些Field被略去)
    # AutoFiled  SlugField SmallIntegerField #Date,DateTime,Decimal,Char,File,Float,FilePath,Text#,Time,Binary,Boolean,BigInterger,NullBoolean,Image,#Interger,OneToOne
    #PositiveSmallIntegerField, #PositiveIntergerField,Url,Email
    #
    # 创建一个model实体
    from django.db import models
    class Publisher(models.Model):
        name = models.CharField(max_length=30) // 普通字段
        website = models.URLField()   // url类型字段
        email = models.EmailField()   // email类型字段
        publication_date = models.DateField()   // 时间类型字段
        publisher = models.ForeignKey(Publisher)   // 引用信息(外键)
    #
    # 模型检测 (需要在settings.py中注册此app)
    python3 manage.py validate
    #
    # 模型生成sql语句查看
    python3 manage.py sqlall modelname (app的名字)
    #
    # 模型生成到db 要生成用户之前必须做这一步
    python3 manage.py syncdb
    #
    # 建立管理超级员
    python manage.py createsuperuser
    #
    # 将model加入到admin管理列表中 在admin中
    from django.contrib import admin
    from books.models import Publisher, Author, Book
    admin.site.register(Author,AuthorAdmin)
    #
    # 附加管理视图
    from django.contrib import admin
    class BookAdmin(admin.ModelAdmin):
        list_display = ('title', 'publisher', 'publication_date')   #显示列
        list_filter = ('publication_date',)    # 列过滤条件
        date_hierarchy = 'publication_date'   # 日期选择条件
        ordering = ('-publication_date',)   # 列表日期降序排列
        fields = ('title', 'authors', 'publisher')  # 编辑时显示需要添加的列   其他列   null=True
        raw_id_fields = ('publisher',)  # 编辑时 显示为id序号
    #
    # 定义模板路径
    TEMPLATE_DIRS = (
        os.path.join(os.path.dirname(__file__), 'template').replace('\\','/'),
        # /Users/King/Documents/Ops/Python/HelloDjango/HelloDjango
        # /Users/King/Documents/Ops/Python/HelloDjango/HelloDjango/template
    )
    #
    # 进入项目命令行模型
    python manage.py shell
        from django.contrib.auth.models import Publisher
        p = Publisher.objects.create(name='Apress',website='www.apress.com')
        Publisher.name = 'tuling'
        所有的model都拥有一个objects管理器
        使用filter方法可以过滤obj    Publisher.objects.filter(name='usa')
        模糊查询        Publisher.objects.filter(name__contains='usa')
    #   
        使用get方法可完成一个对象的获取,如果返回不止一个对象就会报错 Publisher.DoesNotExist
        使用order_by 排序    可 - 倒排
        p = Publisher.objects.filter(id=52).update(name='Apress Publishing')
        p.delete()   删除对象
        p.save()
    #
    # 导入静态文件
    在setting.py中
        # 静态资源区域
        # 这是一个根目录区域   对应实际文件目录
        STATIC_ROOT = 'static/'
        # 这是url配置目录   给urls用的
        STATIC_URL = 'static/'
    在模板页面中
        <link rel="stylesheet" href="` STATIC_URL `css/bootstrap.css">
        <script type="text/javascript" src="` STATIC_URL `js/bootstrap.js"></script>
    在urls.py的配置中
        from django.conf.urls.static import static
        在最后加入
        admin.autodiscover()
        urlpatterns = patterns('',
            # Examples:
            # url(r'^$', 'HelloDjango.views.home', name='home'),
            # url(r'^blog/', include('blog.urls')),
            url(r'^admin/', include(admin.site.urls)),
            (r'^$', latest_books),
        ) + (static(settings.STATIC_URL, document_root=settings.STATIC_ROOT))
    在views.py对应的输出视图中
        return render_to_response('index.html', {
            'book_list': book_list,
            'STATIC_URL': STATIC_URL,
        })
    #
    # 其他解决方案
    配置文件中
    STATICFILES_DIRS = (
        '/Users/King/Documents/Ops/Python/HelloDjango/static',
    )
    #
    #
    # 一个app基本的设置
    #
    #
    import os
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    ROOT_URLCONF = 'HelloDjango.urls'
    SECRET_KEY = '&%s+d(0$motnksr+0o+oo8z9k=2h*7gd%gnnylrnc^w5#nut)h'
    DEBUG = True
    TEMPLATE_DEBUG = True
    ALLOWED_HOSTS = []
    MIDDLEWARE_CLASSES = (
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    )
    WSGI_APPLICATION = 'HelloDjango.wsgi.application'
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    LANGUAGE_CODE = 'en-us'
    TIME_ZONE = 'Asia/Shanghai'
    USE_I18N = True
    USE_L10N = True
    USE_TZ = True
    # # Absolute filesystem path to the directory that will hold user-uploaded files.
    # # Example: "/home/media/media.lawrence.com/media/"
    # MEDIA_ROOT = ''
    #
    # # URL that handles the media served from MEDIA_ROOT. Make sure to use a
    # # trailing slash.
    # # Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
    # MEDIA_URL = ''
    # BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    # TEMPLATE_DIRS = ('templates',)
    # 静态资源区域
    # 这是一个根目录区域   对应实际文件目录
    STATIC_ROOT = 'static/'
    # 这是url配置目录   给urls用的
    STATIC_URL = 'static/'
    # STATICFILES_DIRS = (
    # # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # # Always use forward slashes, even on Windows.
    # # Don't forget to use absolute paths, not relative paths.
    # )
    # STATICFILES_FINDERS = (
    #     'django.contrib.staticfiles.finders.FileSystemFinder',
    #     'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #     #    'django.contrib.staticfiles.finders.DefaultStorageFinder',
    # )
    # 定义模板路径
    # List of callables that know how to import templates from various sources.
    # TEMPLATE_LOADERS = (
    #     'django.template.loaders.filesystem.Loader',
    #     'django.template.loaders.app_directories.Loader',
    #     #     'django.template.loaders.eggs.Loader',
    # )
    TEMPLATE_DIRS = (
        os.path.join(BASE_DIR, 'templates').replace('\\','/'),
    )
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app',
    )
    # LOGGING = {
    #     'version': 1,
    #     'disable_existing_loggers': False,
    #     'filters': {
    #         'require_debug_false': {
    #             '()': 'django.utils.log.RequireDebugFalse'
    #         }
    #     },
    #     'handlers': {
    #         'mail_admins': {
    #             'level': 'ERROR',
    #             'filters': ['require_debug_false'],
    #             'class': 'django.utils.log.AdminEmailHandler'
    #         }
    #     },
    #     'loggers': {
    #         'django.request': {
    #             'handlers': ['mail_admins'],
    #             'level': 'ERROR',
    #             'propagate': True,
    #             },
    #         }
    # }
    Django框架中的基本交互
    12345678910111213141516 # 服务器端展示数据
    from django.shortcuts import render_to_response
    def search(request):
        return render_to_response('search.html', {'books':books,})
    #
    # search.html的数据渲染 , 利用模板
    {% if books %}
        <ul>
        发现 {{ books | length }} 本书
        {% for book in books %}
            <li>` book`.`title `</li>
        {% endfor %}
        </ul>
    {% else %}
        <p>没有查询到任何图书信息</p>
    {% endif %}
    12345678910111213141516171819202122232425 # 客户端提交数据 search_form.html
    <html><head>
    <title>Search</title></head>
    <body>
    {% if error %}
    <p style="color:red;">请输入查询条件</p>
    {% endif %}
    <form action="/search_form/" method="get">    
    <input type="text" name="q">    
    <input type="submit" value="Search">
    </form>
    </body>
    </html>
    #
    # 收集客户端信息
    # from django.http import HttpResponse
    # request.path()   get_host()   get_full_path()   get_isecure()
    # request.META[]   包含http头信息
    def search_form(request):
        if 'q' in request.GET and request.GET['q']:
            q = request.GET['q']
            books = Book.objects.filter(title__icontains=q)
            return render_to_response('search_result.html', {'books':books,'query':q})
        else:
            return render_to_response('search.html', {'error': True})

     

     

     

     

     

关键字