【发布时间】:2018-01-29 20:20:07
【问题描述】:
我是 django 和网络编程的新手。现在,我已经创建了一个用于配置表单生成的 django 项目。它允许用户输入值并在用户获得 URL 后生成配置表单。
它对我自己很好,但多个用户同时使用它。它不起作用。我该怎么做才能让多个用户同时使用它?
forms.py
from django import forms
from .models import FormGen
from .models import BB_Data
class FinalForm(forms.ModelForm):
class Meta:
model=FormGen
field=['full_name','backbone_number']
class BBForm(forms.ModelForm):
class Meta:
model=BB_Data
fields=['backbone_name','IP','numbers']
widget={'numbers':forms.TextInput(attrs={'readonly':'readonly'})}
views.py
from django.shortcuts import render,HttpResponse,redirect
from .forms import FinalForm,BBForm
from django.core.files import File
import re
def replacePara(template,para):
for key,val in para.items():
template=template.replace(key,val)
return template
def create(request):
title="Router Generator"
form=FinalForm(request.POST or None)
context={
"template_title":title,
"form":form,
}
if(form.is_valid()):
form_data={
"HNAME":form.cleaned_data.get("Hostname"),
"ROLE":form.cleaned_data.get("Router_Role"),
}
form.save()
f=open('./input_para.txt','r')
a=f.read();
f.close();
tt=replacePara(a,form_data)
b=open('./input_data.txt','w')
b.write(tt)
b.close()
return redirect('/backbone')
return render(request,"home/form.html",context)
def bb(request):
title="Backbone Information"
if request.method=="POST":
form=BBForm(request.POST)
if form.is_valid():
bb_form={
'BBNAME':form.cleaned_data.get('backbone_name'),
'BBIP':form.cleaned_data.get('IP'),
}
a=int(form.cleaned_data.get('numbers')
datainput=''
if a==1:
f=open('./bb_set.txt','w')
f.write(bb_form)
f.close()
else:
f=open('./bb_set.txt','a')
outBB.write(bb_form)
outBB.close()
form.save()
f=open('./input_data.txt','r')
t=f.read()
tt=int(t.split()[7]) #it get the max number of backbones
if(at<tt):
at=at+1;
bb=BBForm(initial={'numbers':str(at)})
context={
"template_title":title,
"form":bb
}
return render(request,"home/bb.html",context)
else:
# generate the configurate text file #
content=final # content store the configurations
filename="ConfigForm.txt"
response=HttpResponse(content,content_type='text/plain')
response['Content-Disposition']='attachment; filename={0}'.format(filename)
return response
else:
return HttpResponse("something wrong")
else:
form=BBForm(initial={'numbers':"1"})
f=open('./input_data.txt','r')
t=f.read()
tt=int(t.split()[7])
context={
'template_title':title,
'form':form,
'max':tt
}
return render(request,"home/bb.html",context)
input_para:它是存储参数名称的文本文件 input_data:它是存储相应参数值的文本文件 bb_set:它是存储所有主干信息的文本文件
【问题讨论】:
-
“它不起作用”是什么意思?你能和我们分享一些代码,错误是给你的吗?
-
@alessioferri20 “它不起作用”意味着来自 2 个用户的数据输入被中断。没有任何错误信息。生成的表格用于路由器配置。因此,用户需要指定主干的数量。但是,当 User1 需要 1 个骨干,而 User2 需要配置 2 个骨干时,User2 只能配置 1 个骨干。我认为来自 user1 的数据会中断来自 user2 的数据
-
我需要使用 session 还是 cookie 来解决这个问题?如果是,我该如何使用它
-
@Samon Ngai 如果没有代码可以帮助你