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>
 

原文地址:https://www.cnblogs.com/maowuyu-xb/p/10756705.html