zoukankan      html  css  js  c++  java
  • python+Django创建购物网站(一)

    1.凡事预则立不预则废。。工作七八个月,接触的全是Java,Java博大精深,到现在没学好。自己反而完全和python隔离了,再不练练,估计要废。

    2.下载安装pycharm社区版,因为免费,安装Django框架,配置环境变量。

    https://www.cnblogs.com/fanyuchen/p/6918735.html

    由于我之前已经安装好了 现在查看一下安装目录。

    直接查看系统的环境变量 D:software odejs ode_global;%MYSQL_HOME%in;D:python_programLibsite-packagesdjango

    可以看到最后一个为Django的安装路径。D:python_programLibsite-packagesdjango

    3.命令行新建Django项目。创建在D盘,对应项目名称为myproject_shopping。

    但是在对应的目录下找不到此项目,

    ---------------------------------------------------------------------------------------------------------实战篇--------------------------------------------------------------------------------------

    一、视图(包含函数视图和类视图)比较简单,不做赘述。

    需要两个关键的类:urls和view

    二、URL映射。

    1.路径函数,path(route,view,kwargs,name)和re_path(route,view,kwargs,name)一个是正常匹配,一个是正则表达式匹配。

    其中正则表达式,可进行分组,传参,传的参数,可以运用到视图函数中,可获取相应的视图。

     2.正则表达式(正则表达式内容比较多,可以私下多看看)

    3.路径转换器

    路径中可以捕获路径中的数值,路径转换器可以将捕获的数值进行转换为有效参数,传递给函数视图。

    urlpatterns = [
        path('hello1/<str:name>/', views.hello1, name='hello'),
        path('hello2/<slug:name>/', views.hello2),
        path('hello3/<uuid:name>/', views.hello3),
        path('hello4/<path:name>/', views.hello4),
        path('<int:book_id>/', views.show_book_id),
    ]
    预定义路径转换器:
    str:匹配除路径分隔符(/)之外的任何非空字符串。
    int:匹配零或任何正整数。返回一个int。
    slug:匹配由ASCII字母或数字组成的任何字符串,然后这些字符串可以通过连字符(-)和下划线字符(_)连接。例如, building-your-1st-django-site。
    uuid:匹配格式化的UUID。必须包含连字符(-),并且字母必须为小写。例如,075194d3-6885-417e-a8a8-6c931e272f00。
    path:匹配任何非空字符串,包括路径分隔符(/)。

    4.重定向

    (1)站外重定向,访问站内的127.0.0.1;8080 可以返回项目外的一个链接。

    通过在函数视图中,使用redirect函数返回,redirect函数返回一个应答对象。
    示例(跨站重定向):
    def hello(request):
        return redirect('http://www.sina.com')
     
    示例(网站内重定向):

    5.模板。

    一般情况下,一个项目只有一个settings,在相应的myproject目录下。当然,特殊情况下,某个应用服务下也可以有settings。

    (1)注册Books应用。

    在settings里面进行注册,books.apps.BooksConfig(books是它的包名,apps是模块名,BooksConfig是它的类名。)注册完以后,设置模板

     2.Books应用模板设置。

    myproject/settings.py修改TEMPLATES:

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    BACKEND:设置采用哪个模板引擎。django.template.backends.django.DjangoTemplates(django自己的模板)和django.template.backends.jinja2.Jinja2(Jinja2模板)
    DIRS:设置模板文件存储文件夹列表。
    APP_DIRS:设置是否在应用中搜索模板文件。(true表示在当前应用中搜索模板文件。)

    3.创建模板文件夹templates

     1、没有使用模板
    # 没有使用模板
    def show_book_info1(request):
        s = '''
        <html>
            <body>
                <h3>书名:《Python从小白到大牛》</h3>
                <h3>作者:关东升</h3>
            </body>
        </html>
        '''
        return HttpResponse(s)
     
    2、使用模板
    # 在函数视图中使用模板
    def show_book_info2(request):
        context = {'book_name': 'Python从小白到大牛', 'author': '关东升'}
        return render(request, 'book.html', context)


    # 类基础视图中使用模板
    class MyView(TemplateView):
        template_name = 'book.html'

        def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            context['book_name'] = 'Python从小白到大牛'
            context['author'] = '关东升'
            return context
    在函数视图中使用模板使用render,他是渲染函数,context是模板上下文。
    在类基础视图中使用模板时,需要继承TemplateView父类,重写get_context_data方法。在template_name属性中指定模板名。
     
    模板文件book.html:
    <html>
        <body>
            <h3>书名:《{{ book_name }}》</h3>
            <h3>作者:{{  author }}</h3>
        </body>
    </html>
     

  • 相关阅读:
    Linux进程相关的一些笔记
    [Project Euler] 来做欧拉项目练习题吧: 题目007
    [Project Euler] 来做欧拉项目练习题吧: 题目015
    [Project Euler] 来做欧拉项目练习题吧: 题目009
    [Project Euler] 来做欧拉项目练习题吧: 题目017
    [Project Euler] 来做欧拉项目练习题吧: 题目014
    [Project Euler] 来做欧拉项目练习题吧: 题目013
    [Project Euler] 来做欧拉项目练习题吧: 题目006
    [Project Euler] 来做欧拉项目练习题吧: 题目008
    [Project Euler] 来做欧拉项目练习题吧: 题目012
  • 原文地址:https://www.cnblogs.com/maowuyu-xb/p/10756705.html
Copyright © 2011-2022 走看看