将参数从angular $ http.get传递到django views.py到url

时间:2016-12-22 15:49:59

标签: javascript python angularjs django parameter-passing

我尝试从角度传递参数到django的view.py.的import UIKit class ViewControllerA: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet weak var myTableView: UITableView! override func viewDidLoad() { super.viewDidLoad() myTableView.delegate = self myTableView.dataSource = self if #available(iOS 10.0, *) { let refreshControl = UIRefreshControl() let title = NSLocalizedString("PullToRefresh", comment: "Pull to refresh") refreshControl.attributedTitle = NSAttributedString(string: title) refreshControl.addTarget(self, action: #selector(refreshOptions(sender:)), for: .valueChanged) myTableView.refreshControl = refreshControl } } @objc private func refreshOptions(sender: UIRefreshControl) { // Perform actions to refresh the content // ... // and then dismiss the control sender.endRefreshing() } // MARK: - Table view data source func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 12 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) cell.textLabel?.text = "Cell \(String(indexPath.row))" return cell } } 请求。
我回来的网址是GET 并且他们都没有在/contact/api/getName?name=John中点击api_get_client_info,因为正在打印views.py内的字符串和值。但我获得了成功"请求后的消息。

HTML:

api_get_client_info
角度控制器中的

$ http.get请求:

      <select ng-change="selectName(name)" ng-model="name">
        <option value="" disabled>Select from List</option>
        <option ng-repeat="name in nameList" value="{{name.Name}}"> {{name.Name}} </option>
      </select>

Django url.py

        $scope.selectName= function(name){
    Method 1: 
            $http.get("/contact/api/getName", {params: {"personName": name}})
            .success(function(response) {
                console.log("success");
            })
            .error(function(response){
                console.log("failed");
            })

    Method 2:
           $http({
             method:'GET',
             url: '/contact/api/getName?=' + name 
           })
           .success(function(data) {
             console.log("success");
           })
           .error(function(data){
             console.log("failed");
           })
       }

Django views.py

urlpattern = [
  url(r'^api/getName(?P<personName>[a-zA-Z0-9_]+)/$', views.api_get_person_info),
  url(r'', views.main, name='contact',
]

1 个答案:

答案 0 :(得分:1)

我认为你的意思是api_get_person_info内的陈述是而不是正在打印。

这是因为您的网址不匹配。您的模式需要URL本身中的personName:ie api/getName/John/,但您要在查询字符串api/getName?personName=John中传递参数。你应该只使用r'^api/getName$'

你获得200的原因是因为第二种模式,contact 匹配;你没有终止正则表达式,所以它匹配一切。该模式应为r'^$'