把代码从django_micro迁移到 Django
之前已写好django_micro上的代码,大体功能是:输入水印的文字,选择要加水印的图片,最后生成加好水印的图片。django项目和app已创建完成。现在要把代码迁移到django上。
1、修改app的views.py文件
(1)在app的views.py中,把原django_micro中的处理数据部分的代码拷贝过来,一般除了页面代码外,其他代码都要拷贝过来;至少有index函数。
(2)修改少量代码,如:@route('')要删掉,但要记得url,这是配置urls.py的信息
def index(request: HttpRequest):
return render(request, 'page.html')
2、生成网页模板html文件
原django_micro中,页面是用dominate写的,要生成对应的html文件作为网页模板:
(1)在app目录中新建templates目录(templates名称和路径一定要正确);
(2)在app目录中新建ui.py文件;
(3)在ui.py文件中,把原django_micro中页面代码部分拷贝过来,新写代码,运行ui.py文件,在templates目录下生成html文件:
with open('templates/page.html','w+') as f:
f.write(page())
(4)如果有函数需要参数,则给函数一个默认参数{{param}},如:
def item(filename='{{filename}}'):
with dom.div(cls=RESULT_ITEM) as ResultItem:
(5)检查生成的html文件是否符合要求,待传入参数名称和位置是否正确
3、再次修改view.py文件,将模板中所需参数传递过去,如:
def filehandler(request: HttpRequest):
……
ctx = {'filename': filename}
return render(request, 'item.html', context=ctx)
4、在app目录中新建urls.py文件,在其中配置url与views处理函数的对应关系:
from django.urls import path, include, re_path
from . import views
app_name = 'djlapp'
urlpatterns = [
path('', views.index, name='index'),
path('file', views.filehandler, name='file'),
path('download', views.download, name='download'),
]
5、配置项目urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('djlapp.urls')), # 加这句
]
6、如果有提交表单数据的功能,则需要在html表单里input标签附近,添加{% csrf_token %},如:
<input class="hidden" id="fileupload" name="ori_img" onchange="$('#show_info').text(this.value.split("\\").pop(-1))" type="file">
{% csrf_token %}
否则会报csrf的错,提交后续功能不能实现。
7、最后启动服务,浏览器访问地址,验证迁移是否成功。
python manage.py runserver
注意:
1、django_micro代码中的页面代码与数据处理代码要分开,页面代码要用于网页模板生成。
2、以上步骤不是严格一步一步走,应根据实际情况随时在多个文件中修改。